Ruby  2.1.10p492(2016-04-01revision54464)
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
vm_backtrace.c File Reference
#include "ruby/ruby.h"
#include "ruby/encoding.h"
#include "ruby/debug.h"
#include "internal.h"
#include "vm_core.h"
#include "eval_intern.h"
#include "iseq.h"

Go to the source code of this file.

Data Structures

struct  rb_backtrace_location_struct
 
struct  valued_frame_info
 
struct  rb_backtrace_struct
 
struct  bt_iter_arg
 
struct  oldbt_arg
 
struct  rb_debug_inspector_struct
 
struct  collect_caller_bindings_data
 

Macros

#define frame2iseq(frame)   frame
 

Typedefs

typedef struct
rb_backtrace_location_struct 
rb_backtrace_location_t
 
typedef struct rb_backtrace_struct rb_backtrace_t
 

Enumerations

enum  {
  CALLER_BINDING_SELF, CALLER_BINDING_CLASS, CALLER_BINDING_BINDING, CALLER_BINDING_ISEQ,
  CALLER_BINDING_CFP
}
 

Functions

static int calc_lineno (const rb_iseq_t *iseq, const VALUE *pc)
 
int rb_vm_get_sourceline (const rb_control_frame_t *cfp)
 
static void location_mark (void *ptr)
 
static void location_mark_entry (rb_backtrace_location_t *fi)
 
static void location_free (void *ptr)
 
static size_t location_memsize (const void *ptr)
 
static rb_backtrace_location_tlocation_ptr (VALUE locobj)
 
static int location_lineno (rb_backtrace_location_t *loc)
 
static VALUE location_lineno_m (VALUE self)
 
static VALUE location_label (rb_backtrace_location_t *loc)
 
static VALUE location_label_m (VALUE self)
 
static VALUE location_base_label (rb_backtrace_location_t *loc)
 
static VALUE location_base_label_m (VALUE self)
 
static VALUE location_path (rb_backtrace_location_t *loc)
 
static VALUE location_path_m (VALUE self)
 
static VALUE location_absolute_path (rb_backtrace_location_t *loc)
 
static VALUE location_absolute_path_m (VALUE self)
 
static VALUE location_format (VALUE file, int lineno, VALUE name)
 
static VALUE location_to_str (rb_backtrace_location_t *loc)
 
static VALUE location_to_str_m (VALUE self)
 
static VALUE location_inspect_m (VALUE self)
 
static void backtrace_mark (void *ptr)
 
static void backtrace_free (void *ptr)
 
static size_t backtrace_memsize (const void *ptr)
 
int rb_backtrace_p (VALUE obj)
 
static VALUE backtrace_alloc (VALUE klass)
 
static void backtrace_each (rb_thread_t *th, void(*init)(void *arg, size_t size), void(*iter_iseq)(void *arg, const rb_control_frame_t *cfp), void(*iter_cfunc)(void *arg, const rb_control_frame_t *cfp, ID mid), void *arg)
 
static void bt_init (void *ptr, size_t size)
 
static void bt_iter_iseq (void *ptr, const rb_control_frame_t *cfp)
 
static void bt_iter_cfunc (void *ptr, const rb_control_frame_t *cfp, ID mid)
 
static VALUE backtrace_object (rb_thread_t *th)
 
VALUE rb_vm_backtrace_object (void)
 
static VALUE backtrace_collect (rb_backtrace_t *bt, long lev, long n, VALUE(*func)(rb_backtrace_location_t *, void *arg), void *arg)
 
static VALUE location_to_str_dmyarg (rb_backtrace_location_t *loc, void *dmy)
 
static VALUE backtrace_to_str_ary (VALUE self, long lev, long n)
 
VALUE rb_backtrace_to_str_ary (VALUE self)
 
static VALUE location_create (rb_backtrace_location_t *srcloc, void *btobj)
 
static VALUE backtrace_to_location_ary (VALUE self, long lev, long n)
 
VALUE rb_backtrace_to_location_ary (VALUE self)
 
static VALUE backtrace_dump_data (VALUE self)
 
static VALUE backtrace_load_data (VALUE self, VALUE str)
 
VALUE rb_vm_backtrace_str_ary (rb_thread_t *th, long lev, long n)
 
VALUE rb_vm_backtrace_location_ary (rb_thread_t *th, long lev, long n)
 
static void oldbt_init (void *ptr, size_t dmy)
 
static void oldbt_iter_iseq (void *ptr, const rb_control_frame_t *cfp)
 
static void oldbt_iter_cfunc (void *ptr, const rb_control_frame_t *cfp, ID mid)
 
static void oldbt_print (void *data, VALUE file, int lineno, VALUE name)
 
static void vm_backtrace_print (FILE *fp)
 
static void oldbt_bugreport (void *arg, VALUE file, int line, VALUE method)
 
void rb_backtrace_print_as_bugreport (void)
 
void rb_backtrace (void)
 
static void oldbt_print_to (void *data, VALUE file, int lineno, VALUE name)
 
void rb_backtrace_print_to (VALUE output)
 
VALUE rb_make_backtrace (void)
 
static VALUE vm_backtrace_to_ary (rb_thread_t *th, int argc, VALUE *argv, int lev_default, int lev_plus, int to_str)
 
static VALUE thread_backtrace_to_ary (int argc, VALUE *argv, VALUE thval, int to_str)
 
VALUE rb_vm_thread_backtrace (int argc, VALUE *argv, VALUE thval)
 
VALUE rb_vm_thread_backtrace_locations (int argc, VALUE *argv, VALUE thval)
 
static VALUE rb_f_caller (int argc, VALUE *argv)
 
static VALUE rb_f_caller_locations (int argc, VALUE *argv)
 
void Init_vm_backtrace (void)
 
static void collect_caller_bindings_init (void *arg, size_t size)
 
static VALUE get_klass (const rb_control_frame_t *cfp)
 
static void collect_caller_bindings_iseq (void *arg, const rb_control_frame_t *cfp)
 
static void collect_caller_bindings_cfunc (void *arg, const rb_control_frame_t *cfp, ID mid)
 
static VALUE collect_caller_bindings (rb_thread_t *th)
 
VALUE rb_debug_inspector_open (rb_debug_inspector_func_t func, void *data)
 
static VALUE frame_get (const rb_debug_inspector_t *dc, long index)
 
VALUE rb_debug_inspector_frame_self_get (const rb_debug_inspector_t *dc, long index)
 
VALUE rb_debug_inspector_frame_class_get (const rb_debug_inspector_t *dc, long index)
 
VALUE rb_debug_inspector_frame_binding_get (const rb_debug_inspector_t *dc, long index)
 
VALUE rb_debug_inspector_frame_iseq_get (const rb_debug_inspector_t *dc, long index)
 
VALUE rb_debug_inspector_backtrace_locations (const rb_debug_inspector_t *dc)
 
int rb_profile_frames (int start, int limit, VALUE *buff, int *lines)
 
VALUE rb_profile_frame_path (VALUE frame)
 
VALUE rb_profile_frame_absolute_path (VALUE frame)
 
VALUE rb_profile_frame_label (VALUE frame)
 
VALUE rb_profile_frame_base_label (VALUE frame)
 
VALUE rb_profile_frame_first_lineno (VALUE frame)
 
VALUE rb_profile_frame_classpath (VALUE frame)
 
VALUE rb_profile_frame_singleton_method_p (VALUE frame)
 
VALUE rb_profile_frame_method_name (VALUE frame)
 
VALUE rb_profile_frame_qualified_method_name (VALUE frame)
 
VALUE rb_profile_frame_full_label (VALUE frame)
 

Variables

static VALUE rb_cBacktrace
 
static VALUE rb_cBacktraceLocation
 
VALUE ruby_engine_name
 
static const rb_data_type_t location_data_type
 
static const rb_data_type_t backtrace_data_type
 

Macro Definition Documentation

#define frame2iseq (   frame)    frame

Typedef Documentation

Enumeration Type Documentation

anonymous enum
Enumerator
CALLER_BINDING_SELF 
CALLER_BINDING_CLASS 
CALLER_BINDING_BINDING 
CALLER_BINDING_ISEQ 
CALLER_BINDING_CFP 

Definition at line 1075 of file vm_backtrace.c.

Function Documentation

static VALUE backtrace_alloc ( VALUE  klass)
static

Definition at line 423 of file vm_backtrace.c.

References obj, and TypedData_Make_Struct.

Referenced by bt_init(), and Init_vm_backtrace().

static VALUE backtrace_collect ( rb_backtrace_t bt,
long  lev,
long  n,
VALUE(*)(rb_backtrace_location_t *, void *arg func,
void arg 
)
static
static VALUE backtrace_dump_data ( VALUE  self)
static

Definition at line 649 of file vm_backtrace.c.

References rb_backtrace_to_str_ary(), and str.

Referenced by Init_vm_backtrace().

static void backtrace_each ( rb_thread_t th,
void(*)(void *arg, size_t size init,
void(*)(void *arg, const rb_control_frame_t *cfp)  iter_iseq,
void(*)(void *arg, const rb_control_frame_t *cfp, ID mid)  iter_cfunc,
void arg 
)
static
static void backtrace_free ( void ptr)
static
static VALUE backtrace_load_data ( VALUE  self,
VALUE  str 
)
static

Definition at line 656 of file vm_backtrace.c.

References GetCoreDataFromValue, str, and rb_backtrace_struct::strary.

Referenced by Init_vm_backtrace().

static void backtrace_mark ( void ptr)
static
static size_t backtrace_memsize ( const void ptr)
static

Definition at line 404 of file vm_backtrace.c.

References rb_backtrace_struct::backtrace_size.

static VALUE backtrace_object ( rb_thread_t th)
static
static VALUE backtrace_to_location_ary ( VALUE  self,
long  lev,
long  n 
)
static
static VALUE backtrace_to_str_ary ( VALUE  self,
long  lev,
long  n 
)
static
static void bt_init ( void ptr,
size_t  size 
)
static
static void bt_iter_cfunc ( void ptr,
const rb_control_frame_t cfp,
ID  mid 
)
static
static void bt_iter_iseq ( void ptr,
const rb_control_frame_t cfp 
)
static
static int calc_lineno ( const rb_iseq_t iseq,
const VALUE pc 
)
inlinestatic
static VALUE collect_caller_bindings ( rb_thread_t th)
static
static void collect_caller_bindings_cfunc ( void arg,
const rb_control_frame_t cfp,
ID  mid 
)
static
static void collect_caller_bindings_init ( void arg,
size_t  size 
)
static

Definition at line 1088 of file vm_backtrace.c.

Referenced by collect_caller_bindings().

static void collect_caller_bindings_iseq ( void arg,
const rb_control_frame_t cfp 
)
static
static VALUE frame_get ( const rb_debug_inspector_t dc,
long  index 
)
static
static VALUE get_klass ( const rb_control_frame_t cfp)
static
void Init_vm_backtrace ( void  )
static VALUE location_absolute_path ( rb_backtrace_location_t loc)
static
static VALUE location_absolute_path_m ( VALUE  self)
static

Definition at line 294 of file vm_backtrace.c.

References location_absolute_path(), and location_ptr().

Referenced by Init_vm_backtrace().

static VALUE location_base_label ( rb_backtrace_location_t loc)
static
static VALUE location_base_label_m ( VALUE  self)
static

Definition at line 231 of file vm_backtrace.c.

References location_base_label(), and location_ptr().

Referenced by Init_vm_backtrace().

static VALUE location_create ( rb_backtrace_location_t srcloc,
void btobj 
)
static
static VALUE location_format ( VALUE  file,
int  lineno,
VALUE  name 
)
static

Definition at line 300 of file vm_backtrace.c.

References rb_enc_compatible(), rb_enc_sprintf(), and RSTRING_PTR.

Referenced by location_to_str().

static void location_free ( void ptr)
static

Definition at line 97 of file vm_backtrace.c.

References ruby_xfree().

static VALUE location_inspect_m ( VALUE  self)
static

Definition at line 365 of file vm_backtrace.c.

References location_ptr(), location_to_str(), and rb_str_inspect().

Referenced by Init_vm_backtrace().

static VALUE location_label ( rb_backtrace_location_t loc)
static
static VALUE location_label_m ( VALUE  self)
static

Definition at line 204 of file vm_backtrace.c.

References location_label(), and location_ptr().

Referenced by Init_vm_backtrace().

static int location_lineno ( rb_backtrace_location_t loc)
static
static VALUE location_lineno_m ( VALUE  self)
static

Definition at line 155 of file vm_backtrace.c.

References INT2FIX, location_lineno(), and location_ptr().

Referenced by Init_vm_backtrace().

static void location_mark ( void ptr)
static

Definition at line 73 of file vm_backtrace.c.

References valued_frame_info::btobj, and rb_gc_mark().

static void location_mark_entry ( rb_backtrace_location_t fi)
static
static size_t location_memsize ( const void ptr)
static

Definition at line 106 of file vm_backtrace.c.

static VALUE location_path ( rb_backtrace_location_t loc)
static
static VALUE location_path_m ( VALUE  self)
static

Definition at line 264 of file vm_backtrace.c.

References location_path(), and location_ptr().

Referenced by Init_vm_backtrace().

static rb_backtrace_location_t* location_ptr ( VALUE  locobj)
inlinestatic
static VALUE location_to_str ( rb_backtrace_location_t loc)
static
static VALUE location_to_str_dmyarg ( rb_backtrace_location_t loc,
void dmy 
)
static

Definition at line 562 of file vm_backtrace.c.

References location_to_str().

Referenced by backtrace_to_str_ary().

static VALUE location_to_str_m ( VALUE  self)
static

Definition at line 355 of file vm_backtrace.c.

References location_ptr(), and location_to_str().

Referenced by Init_vm_backtrace().

static void oldbt_bugreport ( void arg,
VALUE  file,
int  line,
VALUE  method 
)
static

Definition at line 749 of file vm_backtrace.c.

References oldbt_arg::filename, NIL_P(), and RSTRING_PTR.

Referenced by rb_backtrace_print_as_bugreport().

static void oldbt_init ( void ptr,
size_t  dmy 
)
static
static void oldbt_iter_cfunc ( void ptr,
const rb_control_frame_t cfp,
ID  mid 
)
static
static void oldbt_iter_iseq ( void ptr,
const rb_control_frame_t cfp 
)
static
static void oldbt_print ( void data,
VALUE  file,
int  lineno,
VALUE  name 
)
static

Definition at line 720 of file vm_backtrace.c.

References NIL_P(), and RSTRING_PTR.

Referenced by vm_backtrace_print().

static void oldbt_print_to ( void data,
VALUE  file,
int  lineno,
VALUE  name 
)
static

Definition at line 788 of file vm_backtrace.c.

References NIL_P(), output, PRIsVALUE, rb_io_write(), rb_sprintf(), rb_str_cat2(), rb_str_catf(), and str.

Referenced by rb_backtrace_print_to().

void rb_backtrace ( void  )

Definition at line 782 of file vm_backtrace.c.

References vm_backtrace_print().

Referenced by rescue_callback().

int rb_backtrace_p ( VALUE  obj)

Definition at line 417 of file vm_backtrace.c.

References rb_typeddata_is_kind_of().

Referenced by exc_backtrace(), rb_check_backtrace(), and set_backtrace().

void rb_backtrace_print_as_bugreport ( void  )
void rb_backtrace_print_to ( VALUE  output)
VALUE rb_backtrace_to_location_ary ( VALUE  self)
VALUE rb_backtrace_to_str_ary ( VALUE  self)
VALUE rb_debug_inspector_backtrace_locations ( const rb_debug_inspector_t dc)

Definition at line 1243 of file vm_backtrace.c.

References rb_debug_inspector_struct::backtrace.

VALUE rb_debug_inspector_frame_binding_get ( const rb_debug_inspector_t dc,
long  index 
)

Definition at line 1229 of file vm_backtrace.c.

References CALLER_BINDING_BINDING, frame_get(), and rb_ary_entry().

VALUE rb_debug_inspector_frame_class_get ( const rb_debug_inspector_t dc,
long  index 
)

Definition at line 1222 of file vm_backtrace.c.

References CALLER_BINDING_CLASS, frame_get(), and rb_ary_entry().

VALUE rb_debug_inspector_frame_iseq_get ( const rb_debug_inspector_t dc,
long  index 
)

Definition at line 1236 of file vm_backtrace.c.

References CALLER_BINDING_ISEQ, frame_get(), and rb_ary_entry().

VALUE rb_debug_inspector_frame_self_get ( const rb_debug_inspector_t dc,
long  index 
)

Definition at line 1215 of file vm_backtrace.c.

References CALLER_BINDING_SELF, frame_get(), and rb_ary_entry().

VALUE rb_debug_inspector_open ( rb_debug_inspector_func_t  func,
void data 
)
static VALUE rb_f_caller ( int  argc,
VALUE argv 
)
static

Definition at line 956 of file vm_backtrace.c.

References GET_THREAD(), and vm_backtrace_to_ary().

Referenced by Init_vm_backtrace().

static VALUE rb_f_caller_locations ( int  argc,
VALUE argv 
)
static

Definition at line 984 of file vm_backtrace.c.

References GET_THREAD(), and vm_backtrace_to_ary().

Referenced by Init_vm_backtrace().

VALUE rb_make_backtrace ( void  )

Definition at line 817 of file vm_backtrace.c.

References GET_THREAD(), and rb_vm_backtrace_str_ary().

Referenced by parser_set_encode().

VALUE rb_profile_frame_absolute_path ( VALUE  frame)

Definition at line 1282 of file vm_backtrace.c.

References frame2iseq, and rb_iseq_absolute_path().

VALUE rb_profile_frame_base_label ( VALUE  frame)

Definition at line 1294 of file vm_backtrace.c.

References frame2iseq, and rb_iseq_base_label().

Referenced by rb_profile_frame_full_label().

VALUE rb_profile_frame_classpath ( VALUE  frame)
VALUE rb_profile_frame_first_lineno ( VALUE  frame)

Definition at line 1300 of file vm_backtrace.c.

References frame2iseq, and rb_iseq_first_lineno().

VALUE rb_profile_frame_full_label ( VALUE  frame)
VALUE rb_profile_frame_label ( VALUE  frame)

Definition at line 1288 of file vm_backtrace.c.

References frame2iseq, and rb_iseq_label().

Referenced by rb_profile_frame_full_label().

VALUE rb_profile_frame_method_name ( VALUE  frame)

Definition at line 1339 of file vm_backtrace.c.

References frame2iseq, and rb_iseq_method_name().

VALUE rb_profile_frame_path ( VALUE  frame)

Definition at line 1276 of file vm_backtrace.c.

References frame2iseq, and rb_iseq_path().

VALUE rb_profile_frame_qualified_method_name ( VALUE  frame)
VALUE rb_profile_frame_singleton_method_p ( VALUE  frame)
int rb_profile_frames ( int  start,
int  limit,
VALUE buff,
int lines 
)
VALUE rb_vm_backtrace_location_ary ( rb_thread_t th,
long  lev,
long  n 
)

Definition at line 671 of file vm_backtrace.c.

References backtrace_object(), and backtrace_to_location_ary().

Referenced by rb_debug_inspector_open().

VALUE rb_vm_backtrace_object ( void  )

Definition at line 536 of file vm_backtrace.c.

References backtrace_object(), and GET_THREAD().

Referenced by argument_error(), and setup_exception().

VALUE rb_vm_backtrace_str_ary ( rb_thread_t th,
long  lev,
long  n 
)

Definition at line 665 of file vm_backtrace.c.

References backtrace_object(), and backtrace_to_str_ary().

Referenced by eval_string_with_cref(), and rb_make_backtrace().

int rb_vm_get_sourceline ( const rb_control_frame_t cfp)
VALUE rb_vm_thread_backtrace ( int  argc,
VALUE argv,
VALUE  thval 
)

Definition at line 906 of file vm_backtrace.c.

References thread_backtrace_to_ary().

Referenced by rb_thread_backtrace_m().

VALUE rb_vm_thread_backtrace_locations ( int  argc,
VALUE argv,
VALUE  thval 
)

Definition at line 912 of file vm_backtrace.c.

References thread_backtrace_to_ary().

Referenced by rb_thread_backtrace_locations_m().

static VALUE thread_backtrace_to_ary ( int  argc,
VALUE argv,
VALUE  thval,
int  to_str 
)
static
static void vm_backtrace_print ( FILE fp)
static
static VALUE vm_backtrace_to_ary ( rb_thread_t th,
int  argc,
VALUE argv,
int  lev_default,
int  lev_plus,
int  to_str 
)
static

Variable Documentation

const rb_data_type_t backtrace_data_type
static
Initial value:
= {
"backtrace",
}
#define RUBY_TYPED_FREE_IMMEDIATELY
static void backtrace_free(void *ptr)
Definition: vm_backtrace.c:394
#define NULL
Definition: _sdbm.c:102
static size_t backtrace_memsize(const void *ptr)
Definition: vm_backtrace.c:404
static void backtrace_mark(void *ptr)
Definition: vm_backtrace.c:379

Definition at line 410 of file vm_backtrace.c.

const rb_data_type_t location_data_type
static
Initial value:
= {
"frame_info",
}
#define RUBY_TYPED_FREE_IMMEDIATELY
static void location_mark(void *ptr)
Definition: vm_backtrace.c:73
static size_t location_memsize(const void *ptr)
Definition: vm_backtrace.c:106
static void location_free(void *ptr)
Definition: vm_backtrace.c:97
#define NULL
Definition: _sdbm.c:102

Definition at line 112 of file vm_backtrace.c.

VALUE rb_cBacktrace
static

Definition at line 21 of file vm_backtrace.c.

Referenced by bt_init(), and Init_vm_backtrace().

VALUE rb_cBacktraceLocation
static

Definition at line 22 of file vm_backtrace.c.

Referenced by Init_vm_backtrace(), and location_create().

VALUE ruby_engine_name

Definition at line 35 of file version.c.

Referenced by Init_version(), location_to_str(), and oldbt_init().