00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef RB_DEBUG_H
00013 #define RB_DEBUG_H 1
00014
00015 #if defined(__cplusplus)
00016 extern "C" {
00017 #if 0
00018 }
00019 #endif
00020 #endif
00021
00022 #if defined __GNUC__ && __GNUC__ >= 4
00023 #pragma GCC visibility push(default)
00024 #endif
00025
00026
00027
00028
00029
00030 typedef struct rb_debug_inspector_struct rb_debug_inspector_t;
00031 typedef VALUE (*rb_debug_inspector_func_t)(const rb_debug_inspector_t *, void *);
00032
00033 VALUE rb_debug_inspector_open(rb_debug_inspector_func_t func, void *data);
00034 VALUE rb_debug_inspector_frame_self_get(const rb_debug_inspector_t *dc, long index);
00035 VALUE rb_debug_inspector_frame_class_get(const rb_debug_inspector_t *dc, long index);
00036 VALUE rb_debug_inspector_frame_binding_get(const rb_debug_inspector_t *dc, long index);
00037 VALUE rb_debug_inspector_frame_iseq_get(const rb_debug_inspector_t *dc, long index);
00038 VALUE rb_debug_inspector_backtrace_locations(const rb_debug_inspector_t *dc);
00039
00040
00041
00042
00043 void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events, VALUE data);
00044 int rb_remove_event_hook(rb_event_hook_func_t func);
00045
00046 int rb_remove_event_hook_with_data(rb_event_hook_func_t func, VALUE data);
00047 void rb_thread_add_event_hook(VALUE thval, rb_event_hook_func_t func, rb_event_flag_t events, VALUE data);
00048 int rb_thread_remove_event_hook(VALUE thval, rb_event_hook_func_t func);
00049 int rb_thread_remove_event_hook_with_data(VALUE thval, rb_event_hook_func_t func, VALUE data);
00050
00051
00052
00053 VALUE rb_tracepoint_new(VALUE target_thread_not_supported_yet, rb_event_flag_t events, void (*func)(VALUE, void *), void *data);
00054 VALUE rb_tracepoint_enable(VALUE tpval);
00055 VALUE rb_tracepoint_disable(VALUE tpval);
00056 VALUE rb_tracepoint_enabled_p(VALUE tpval);
00057
00058 typedef struct rb_trace_arg_struct rb_trace_arg_t;
00059 rb_trace_arg_t *rb_tracearg_from_tracepoint(VALUE tpval);
00060
00061 VALUE rb_tracearg_event(rb_trace_arg_t *trace_arg);
00062 VALUE rb_tracearg_lineno(rb_trace_arg_t *trace_arg);
00063 VALUE rb_tracearg_path(rb_trace_arg_t *trace_arg);
00064 VALUE rb_tracearg_method_id(rb_trace_arg_t *trace_arg);
00065 VALUE rb_tracearg_defined_class(rb_trace_arg_t *trace_arg);
00066 VALUE rb_tracearg_binding(rb_trace_arg_t *trace_arg);
00067 VALUE rb_tracearg_self(rb_trace_arg_t *trace_arg);
00068 VALUE rb_tracearg_return_value(rb_trace_arg_t *trace_arg);
00069 VALUE rb_tracearg_raised_exception(rb_trace_arg_t *trace_arg);
00070
00071
00072
00073 typedef enum {
00074 RUBY_EVENT_HOOK_FLAG_SAFE = 0x01,
00075 RUBY_EVENT_HOOK_FLAG_DELETED = 0x02,
00076 RUBY_EVENT_HOOK_FLAG_RAW_ARG = 0x04
00077 } rb_event_hook_flag_t;
00078
00079 void rb_add_event_hook2(rb_event_hook_func_t func, rb_event_flag_t events, VALUE data, rb_event_hook_flag_t hook_flag);
00080 void rb_thread_add_event_hook2(VALUE thval, rb_event_hook_func_t func, rb_event_flag_t events, VALUE data, rb_event_hook_flag_t hook_flag);
00081
00082 #if defined __GNUC__ && __GNUC__ >= 4
00083 #pragma GCC visibility pop
00084 #endif
00085
00086 #if defined(__cplusplus)
00087 #if 0
00088 {
00089 #endif
00090 }
00091 #endif
00092
00093 #endif
00094