Ruby  2.0.0p247(2013-06-27revision41674)
Data Structures | 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
 

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)
 
static VALUE backtrace_dump_data (VALUE self)
 
static VALUE backtrace_load_data (VALUE self, VALUE str)
 
VALUE vm_backtrace_str_ary (rb_thread_t *th, long lev, long n)
 
VALUE 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)
 
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 vm_thread_backtrace (int argc, VALUE *argv, VALUE thval)
 
VALUE 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)
 

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
 

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 1032 of file vm_backtrace.c.

Function Documentation

static VALUE backtrace_alloc ( VALUE  klass)
static

Definition at line 419 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 633 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 640 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 401 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 1045 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 293 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 230 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 299 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 364 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 203 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 154 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 263 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 558 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 354 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 733 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 704 of file vm_backtrace.c.

References NIL_P(), and RSTRING_PTR.

Referenced by vm_backtrace_print().

void rb_backtrace ( void  )

Definition at line 766 of file vm_backtrace.c.

References vm_backtrace_print().

Referenced by load_lock(), and rescue_callback().

int rb_backtrace_p ( VALUE  obj)

Definition at line 413 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  )
VALUE rb_backtrace_to_str_ary ( VALUE  self)
VALUE rb_debug_inspector_backtrace_locations ( const rb_debug_inspector_t dc)

Definition at line 1200 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 1186 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 1179 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 1193 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 1172 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 909 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 937 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 772 of file vm_backtrace.c.

References GET_THREAD(), and vm_backtrace_str_ary().

Referenced by argument_error(), and parser_set_encode().

VALUE rb_vm_backtrace_object ( void  )

Definition at line 532 of file vm_backtrace.c.

References backtrace_object(), and GET_THREAD().

Referenced by setup_exception().

int rb_vm_get_sourceline ( const rb_control_frame_t cfp)
static VALUE thread_backtrace_to_ary ( int  argc,
VALUE argv,
VALUE  thval,
int  to_str 
)
static
VALUE vm_backtrace_location_ary ( rb_thread_t th,
long  lev,
long  n 
)

Definition at line 655 of file vm_backtrace.c.

References backtrace_object(), and backtrace_to_location_ary().

Referenced by rb_debug_inspector_open().

static void vm_backtrace_print ( FILE fp)
static
VALUE vm_backtrace_str_ary ( rb_thread_t th,
long  lev,
long  n 
)

Definition at line 649 of file vm_backtrace.c.

References backtrace_object(), and backtrace_to_str_ary().

Referenced by eval_string_with_cref(), and rb_make_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
VALUE vm_thread_backtrace ( int  argc,
VALUE argv,
VALUE  thval 
)

Definition at line 859 of file vm_backtrace.c.

References thread_backtrace_to_ary().

Referenced by rb_thread_backtrace_m().

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

Definition at line 865 of file vm_backtrace.c.

References thread_backtrace_to_ary().

Referenced by rb_thread_backtrace_locations_m().

Variable Documentation

const rb_data_type_t backtrace_data_type
static
Initial value:
= {
"backtrace",
}
static void backtrace_free(void *ptr)
Definition: vm_backtrace.c:391
static size_t backtrace_memsize(const void *ptr)
Definition: vm_backtrace.c:401
static void backtrace_mark(void *ptr)
Definition: vm_backtrace.c:377

Definition at line 407 of file vm_backtrace.c.

const rb_data_type_t location_data_type
static
Initial value:
= {
"frame_info",
}
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

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 73 of file version.c.

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