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

Defines

#define frame2iseq(frame)   frame

Typedefs

typedef rb_backtrace_location_struct rb_backtrace_location_t
typedef 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


Define Documentation

#define frame2iseq ( frame   )     frame

Definition at line 1273 of file vm_backtrace.c.

Referenced by rb_profile_frame_absolute_path(), rb_profile_frame_base_label(), rb_profile_frame_classpath(), rb_profile_frame_first_lineno(), rb_profile_frame_label(), rb_profile_frame_method_name(), rb_profile_frame_path(), rb_profile_frame_qualified_method_name(), and rb_profile_frame_singleton_method_p().


Typedef Documentation

typedef struct rb_backtrace_location_struct rb_backtrace_location_t

typedef struct rb_backtrace_struct rb_backtrace_t


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 backtrace_data_type, TypedData_Make_Struct, and VALUE.

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]

Definition at line 542 of file vm_backtrace.c.

References rb_backtrace_struct::backtrace, rb_backtrace_struct::backtrace_size, bt_iter_arg::bt, func, rb_ary_new(), rb_ary_push(), rb_bug(), UNLIKELY, and VALUE.

Referenced by backtrace_to_location_ary(), and backtrace_to_str_ary().

static VALUE backtrace_dump_data ( VALUE  self  )  [static]

Definition at line 649 of file vm_backtrace.c.

References rb_backtrace_to_str_ary(), and VALUE.

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]

Definition at line 431 of file vm_backtrace.c.

References rb_thread_struct::cfp, RUBY_VM_END_CONTROL_FRAME, RUBY_VM_NEXT_CONTROL_FRAME, and RUBYVM_CFUNC_FRAME_P.

Referenced by backtrace_object(), collect_caller_bindings(), rb_backtrace_print_as_bugreport(), rb_backtrace_print_to(), and vm_backtrace_print().

static void backtrace_free ( void *  ptr  )  [static]

Definition at line 394 of file vm_backtrace.c.

References rb_backtrace_struct::backtrace, rb_backtrace_struct::backtrace_base, and ruby_xfree().

static VALUE backtrace_load_data ( VALUE  self,
VALUE  str 
) [static]

Definition at line 656 of file vm_backtrace.c.

References GetCoreDataFromValue, and rb_backtrace_struct::strary.

Referenced by Init_vm_backtrace().

static void backtrace_mark ( void *  ptr  )  [static]

Definition at line 379 of file vm_backtrace.c.

References rb_backtrace_struct::backtrace, rb_backtrace_struct::backtrace_size, rb_backtrace_struct::locary, location_mark_entry(), rb_gc_mark(), and rb_backtrace_struct::strary.

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]

Definition at line 521 of file vm_backtrace.c.

References backtrace_each(), bt_init(), bt_iter_cfunc(), bt_iter_iseq(), bt_iter_arg::btobj, and bt_iter_arg::prev_loc.

Referenced by rb_vm_backtrace_location_ary(), rb_vm_backtrace_object(), rb_vm_backtrace_str_ary(), and vm_backtrace_to_ary().

static VALUE backtrace_to_location_ary ( VALUE  self,
long  lev,
long  n 
) [static]

Definition at line 615 of file vm_backtrace.c.

References backtrace_collect(), rb_backtrace_struct::backtrace_size, GetCoreDataFromValue, location_create(), Qnil, RB_GC_GUARD, and VALUE.

Referenced by rb_backtrace_to_location_ary(), rb_vm_backtrace_location_ary(), and vm_backtrace_to_ary().

static VALUE backtrace_to_str_ary ( VALUE  self,
long  lev,
long  n 
) [static]

Definition at line 568 of file vm_backtrace.c.

References backtrace_collect(), rb_backtrace_struct::backtrace_size, bt_iter_arg::bt, GetCoreDataFromValue, location_to_str_dmyarg(), Qnil, RB_GC_GUARD, and VALUE.

Referenced by rb_backtrace_to_str_ary(), rb_vm_backtrace_str_ary(), and vm_backtrace_to_ary().

static void bt_init ( void *  ptr,
size_t  size 
) [static]

Definition at line 488 of file vm_backtrace.c.

References rb_backtrace_struct::backtrace, backtrace_alloc(), rb_backtrace_struct::backtrace_base, rb_backtrace_struct::backtrace_size, bt_iter_arg::bt, bt_iter_arg::btobj, GetCoreDataFromValue, rb_cBacktrace, and ruby_xmalloc().

Referenced by backtrace_object().

static void bt_iter_cfunc ( void *  ptr,
const rb_control_frame_t cfp,
ID  mid 
) [static]

Definition at line 511 of file vm_backtrace.c.

References rb_backtrace_struct::backtrace, rb_backtrace_struct::backtrace_size, rb_backtrace_location_struct::body, bt_iter_arg::bt, rb_backtrace_location_struct::cfunc, bt_iter_arg::prev_loc, and rb_backtrace_location_struct::type.

Referenced by backtrace_object().

static void bt_iter_iseq ( void *  ptr,
const rb_control_frame_t cfp 
) [static]

Definition at line 498 of file vm_backtrace.c.

References rb_backtrace_struct::backtrace, rb_backtrace_struct::backtrace_size, rb_backtrace_location_struct::body, bt_iter_arg::bt, rb_iseq_struct::iseq, rb_backtrace_location_struct::iseq, rb_control_frame_struct::iseq, rb_control_frame_struct::pc, bt_iter_arg::prev_loc, rb_backtrace_location_struct::type, and VALUE.

Referenced by backtrace_object().

static int calc_lineno ( const rb_iseq_t iseq,
const VALUE *  pc 
) [inline, static]

Definition at line 27 of file vm_backtrace.c.

References rb_iseq_struct::iseq_encoded, and rb_iseq_line_no().

Referenced by location_lineno(), location_to_str(), oldbt_iter_iseq(), rb_profile_frames(), and rb_vm_get_sourceline().

static VALUE collect_caller_bindings ( rb_thread_t th  )  [static]

Definition at line 1141 of file vm_backtrace.c.

References collect_caller_bindings_data::ary, backtrace_each(), CALLER_BINDING_BINDING, collect_caller_bindings_cfunc(), collect_caller_bindings_init(), collect_caller_bindings_iseq(), GC_GUARDED_PTR_REF, NIL_P, RARRAY_LEN, rb_ary_entry(), rb_ary_new(), rb_ary_reverse(), rb_ary_store(), rb_binding_new_with_cfp(), result, and VALUE.

Referenced by rb_debug_inspector_open().

static void collect_caller_bindings_cfunc ( void *  arg,
const rb_control_frame_t cfp,
ID  mid 
) [static]

Definition at line 1126 of file vm_backtrace.c.

References collect_caller_bindings_data::ary, CALLER_BINDING_BINDING, CALLER_BINDING_CLASS, CALLER_BINDING_ISEQ, CALLER_BINDING_SELF, GC_GUARDED_PTR, get_klass(), Qnil, rb_ary_new2, rb_ary_push(), rb_ary_store(), rb_control_frame_struct::self, and VALUE.

Referenced by collect_caller_bindings().

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]

Definition at line 1111 of file vm_backtrace.c.

References collect_caller_bindings_data::ary, CALLER_BINDING_BINDING, CALLER_BINDING_CLASS, CALLER_BINDING_ISEQ, CALLER_BINDING_SELF, GC_GUARDED_PTR, get_klass(), rb_control_frame_struct::iseq, Qnil, rb_ary_new2, rb_ary_push(), rb_ary_store(), rb_iseq_struct::self, rb_control_frame_struct::self, and VALUE.

Referenced by collect_caller_bindings().

static VALUE frame_get ( const rb_debug_inspector_t dc,
long  index 
) [static]

Definition at line 1206 of file vm_backtrace.c.

References rb_debug_inspector_struct::backtrace_size, rb_debug_inspector_struct::contexts, rb_ary_entry(), rb_eArgError, and rb_raise().

Referenced by rb_debug_inspector_frame_binding_get(), rb_debug_inspector_frame_class_get(), rb_debug_inspector_frame_iseq_get(), and rb_debug_inspector_frame_self_get().

static VALUE get_klass ( const rb_control_frame_t cfp  )  [static]

Definition at line 1094 of file vm_backtrace.c.

References Qnil, RB_TYPE_P, rb_vm_control_frame_id_and_class(), RBASIC, T_ICLASS, and VALUE.

Referenced by collect_caller_bindings_cfunc(), and collect_caller_bindings_iseq().

void Init_vm_backtrace ( void   ) 

Definition at line 991 of file vm_backtrace.c.

References backtrace_alloc(), backtrace_dump_data(), backtrace_load_data(), CLASS_OF, location_absolute_path_m(), location_base_label_m(), location_inspect_m(), location_label_m(), location_lineno_m(), location_path_m(), location_to_str_m(), rb_cArray, rb_cBacktrace, rb_cBacktraceLocation, rb_cObject, rb_cThread, rb_define_alloc_func(), rb_define_class_under(), rb_define_global_function(), rb_define_method(), rb_f_caller(), rb_f_caller_locations(), rb_marshal_define_compat(), rb_undef_alloc_func(), and rb_undef_method().

Referenced by Init_VM().

static VALUE location_absolute_path ( rb_backtrace_location_t loc  )  [static]

Definition at line 270 of file vm_backtrace.c.

References rb_backtrace_location_struct::body, rb_backtrace_location_struct::cfunc, rb_iseq_struct::iseq, rb_backtrace_location_struct::iseq, valued_frame_info::loc, Qnil, rb_bug(), rb_backtrace_location_struct::type, and UNREACHABLE.

Referenced by location_absolute_path_m().

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]

Definition at line 210 of file vm_backtrace.c.

References rb_backtrace_location_struct::body, rb_backtrace_location_struct::cfunc, ID2SYM, rb_iseq_struct::iseq, rb_backtrace_location_struct::iseq, valued_frame_info::loc, rb_bug(), rb_sym_to_s(), rb_backtrace_location_struct::type, and UNREACHABLE.

Referenced by location_base_label_m().

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]

Definition at line 602 of file vm_backtrace.c.

References valued_frame_info::btobj, valued_frame_info::loc, location_data_type, rb_cBacktraceLocation, TypedData_Make_Struct, and VALUE.

Referenced by backtrace_to_location_ary().

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]

Definition at line 161 of file vm_backtrace.c.

References rb_backtrace_location_struct::body, rb_backtrace_location_struct::cfunc, rb_iseq_struct::iseq, rb_backtrace_location_struct::iseq, valued_frame_info::loc, rb_bug(), rb_id2str(), rb_backtrace_location_struct::type, and UNREACHABLE.

Referenced by location_label_m().

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]

Definition at line 127 of file vm_backtrace.c.

References rb_backtrace_location_struct::body, calc_lineno(), rb_backtrace_location_struct::cfunc, rb_iseq_struct::iseq, rb_backtrace_location_struct::iseq, valued_frame_info::loc, rb_bug(), rb_backtrace_location_struct::type, and UNREACHABLE.

Referenced by location_lineno_m(), and location_to_str().

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]

Definition at line 82 of file vm_backtrace.c.

References rb_backtrace_location_struct::body, rb_iseq_struct::iseq, rb_backtrace_location_struct::iseq, rb_gc_mark(), and rb_backtrace_location_struct::type.

Referenced by backtrace_mark().

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]

Definition at line 237 of file vm_backtrace.c.

References rb_backtrace_location_struct::body, rb_backtrace_location_struct::cfunc, rb_iseq_struct::iseq, rb_backtrace_location_struct::iseq, valued_frame_info::loc, Qnil, rb_bug(), rb_backtrace_location_struct::type, and UNREACHABLE.

Referenced by location_path_m().

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  )  [inline, static]

Definition at line 119 of file vm_backtrace.c.

References GetCoreDataFromValue, and valued_frame_info::loc.

Referenced by location_absolute_path_m(), location_base_label_m(), location_inspect_m(), location_label_m(), location_lineno_m(), location_path_m(), and location_to_str_m().

static VALUE location_to_str ( rb_backtrace_location_t loc  )  [static]

Definition at line 313 of file vm_backtrace.c.

References rb_backtrace_location_struct::body, calc_lineno(), rb_backtrace_location_struct::cfunc, GET_THREAD(), INT2FIX, rb_iseq_struct::iseq, rb_backtrace_location_struct::iseq, valued_frame_info::loc, location_format(), location_lineno(), name, rb_vm_struct::progname, rb_bug(), rb_id2str(), ruby_engine_name, rb_backtrace_location_struct::type, VALUE, and rb_thread_struct::vm.

Referenced by location_inspect_m(), location_to_str_dmyarg(), and location_to_str_m().

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]

Definition at line 686 of file vm_backtrace.c.

References oldbt_arg::filename, GET_THREAD(), oldbt_arg::lineno, rb_vm_struct::progname, ruby_engine_name, and rb_thread_struct::vm.

Referenced by rb_backtrace_print_as_bugreport(), rb_backtrace_print_to(), and vm_backtrace_print().

static void oldbt_iter_cfunc ( void *  ptr,
const rb_control_frame_t cfp,
ID  mid 
) [static]

Definition at line 709 of file vm_backtrace.c.

References oldbt_arg::data, oldbt_arg::filename, oldbt_arg::func, oldbt_arg::lineno, name, rb_id2str(), and VALUE.

Referenced by rb_backtrace_print_as_bugreport(), rb_backtrace_print_to(), and vm_backtrace_print().

static void oldbt_iter_iseq ( void *  ptr,
const rb_control_frame_t cfp 
) [static]

Definition at line 696 of file vm_backtrace.c.

References calc_lineno(), oldbt_arg::data, oldbt_arg::filename, oldbt_arg::func, rb_control_frame_struct::iseq, rb_iseq_location_struct::label, oldbt_arg::lineno, rb_iseq_struct::location, name, rb_iseq_location_struct::path, rb_control_frame_struct::pc, and VALUE.

Referenced by rb_backtrace_print_as_bugreport(), rb_backtrace_print_to(), and vm_backtrace_print().

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 VALUE.

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 backtrace_data_type, and rb_typeddata_is_kind_of().

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

void rb_backtrace_print_as_bugreport ( void   ) 

Definition at line 766 of file vm_backtrace.c.

References backtrace_each(), oldbt_arg::data, oldbt_arg::func, GET_THREAD(), oldbt_bugreport(), oldbt_init(), oldbt_iter_cfunc(), and oldbt_iter_iseq().

Referenced by rb_vm_bugreport().

void rb_backtrace_print_to ( VALUE  output  ) 

Definition at line 803 of file vm_backtrace.c.

References backtrace_each(), oldbt_arg::data, oldbt_arg::func, GET_THREAD(), oldbt_init(), oldbt_iter_cfunc(), oldbt_iter_iseq(), and oldbt_print_to().

Referenced by load_lock().

VALUE rb_backtrace_to_location_ary ( VALUE  self  ) 

Definition at line 637 of file vm_backtrace.c.

References backtrace_to_location_ary(), GetCoreDataFromValue, and rb_backtrace_struct::locary.

Referenced by exc_backtrace_locations().

VALUE rb_backtrace_to_str_ary ( VALUE  self  ) 

Definition at line 590 of file vm_backtrace.c.

References rb_backtrace_struct::backtrace_size, backtrace_to_str_ary(), bt_iter_arg::bt, GetCoreDataFromValue, and rb_backtrace_struct::strary.

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

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(), rb_ary_entry(), and VALUE.

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(), rb_ary_entry(), and VALUE.

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(), rb_ary_entry(), and VALUE.

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(), rb_ary_entry(), and VALUE.

VALUE rb_debug_inspector_open ( rb_debug_inspector_func_t  func,
void *  data 
)

Definition at line 1177 of file vm_backtrace.c.

References rb_debug_inspector_struct::backtrace, rb_debug_inspector_struct::backtrace_size, rb_thread_struct::cfp, rb_debug_inspector_struct::cfp, collect_caller_bindings(), rb_debug_inspector_struct::contexts, EXEC_TAG, GET_THREAD(), JUMP_TAG, RARRAY_LEN, rb_vm_backtrace_location_ary(), result, rb_debug_inspector_struct::th, TH_POP_TAG, TH_PUSH_TAG, UNINITIALIZED_VAR, and VALUE.

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().

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  ) 

Definition at line 1306 of file vm_backtrace.c.

References FL_SINGLETON, FL_TEST, frame2iseq, NIL_P, Qnil, rb_class2name(), rb_class_path(), rb_iseq_klass(), rb_ivar_get(), rb_obj_class(), rb_sprintf(), RB_TYPE_P, RBASIC, T_CLASS, T_ICLASS, and VALUE.

Referenced by rb_profile_frame_qualified_method_name().

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  ) 

Definition at line 1366 of file vm_backtrace.c.

References NIL_P, PRIsVALUE, rb_long2int, rb_profile_frame_base_label(), rb_profile_frame_label(), rb_profile_frame_qualified_method_name(), rb_sprintf(), RSTRING_LEN, RSTRING_PTR, and VALUE.

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  ) 

Definition at line 1345 of file vm_backtrace.c.

References classpath, frame2iseq, method_name(), PRIsVALUE, Qnil, Qtrue, rb_iseq_method_name(), rb_profile_frame_classpath(), rb_profile_frame_singleton_method_p(), rb_sprintf(), and VALUE.

Referenced by rb_profile_frame_full_label().

VALUE rb_profile_frame_singleton_method_p ( VALUE  frame  ) 

Definition at line 1327 of file vm_backtrace.c.

References FL_SINGLETON, FL_TEST, frame2iseq, NIL_P, Qfalse, Qtrue, rb_iseq_klass(), and VALUE.

Referenced by rb_profile_frame_qualified_method_name().

int rb_profile_frames ( int  start,
int  limit,
VALUE *  buff,
int *  lines 
)

Definition at line 1249 of file vm_backtrace.c.

References calc_lineno(), rb_thread_struct::cfp, GET_THREAD(), if(), rb_control_frame_struct::iseq, rb_control_frame_struct::pc, RUBY_VM_END_CONTROL_FRAME, RUBY_VM_PREVIOUS_CONTROL_FRAME, and rb_iseq_struct::self.

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  ) 

Definition at line 33 of file vm_backtrace.c.

References calc_lineno(), rb_control_frame_struct::iseq, rb_control_frame_struct::pc, and RUBY_VM_NORMAL_ISEQ_P.

Referenced by control_frame_dump(), fill_path_and_lineno(), rb_add_method(), rb_sourceline(), rb_thread_current_status(), and rb_vm_make_binding().

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]

Definition at line 894 of file vm_backtrace.c.

References GetThreadPtr, Qnil, rb_thread_struct::status, THREAD_KILLED, rb_thread_struct::to_kill, and vm_backtrace_to_ary().

Referenced by rb_vm_thread_backtrace(), and rb_vm_thread_backtrace_locations().

static void vm_backtrace_print ( FILE fp  )  [static]

Definition at line 735 of file vm_backtrace.c.

References backtrace_each(), oldbt_arg::data, oldbt_arg::func, GET_THREAD(), oldbt_init(), oldbt_iter_cfunc(), oldbt_iter_iseq(), and oldbt_print().

Referenced by rb_backtrace().

static VALUE vm_backtrace_to_ary ( rb_thread_t th,
int  argc,
VALUE *  argv,
int  lev_default,
int  lev_plus,
int  to_str 
) [static]

Definition at line 823 of file vm_backtrace.c.

References backtrace_object(), rb_backtrace_struct::backtrace_size, backtrace_to_location_ary(), backtrace_to_str_ary(), GetCoreDataFromValue, len, level, NIL_P, NUM2LONG, Qfalse, Qnil, rb_ary_new(), rb_eArgError, RB_GC_GUARD, rb_raise(), rb_range_beg_len(), rb_scan_args(), and VALUE.

Referenced by rb_f_caller(), rb_f_caller_locations(), and thread_backtrace_to_ary().


Variable Documentation

const rb_data_type_t backtrace_data_type [static]

Initial value:

Definition at line 410 of file vm_backtrace.c.

Referenced by backtrace_alloc(), and rb_backtrace_p().

const rb_data_type_t location_data_type [static]

Initial value:

Definition at line 112 of file vm_backtrace.c.

Referenced by location_create().

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().


Generated on 19 Jul 2016 for Ruby by  doxygen 1.4.7