Ruby 3.4.5p51 (2025-07-16 revision 20cda200d3ce092571d0b5d342dadca69636cb0f)
|
Debugging and tracing APIs. More...
Go to the source code of this file.
Macros | |
#define | RB_EVENT_HOOKS_HAVE_CALLBACK_DATA 1 |
Traditional set_trace_func events | |
#define | RUBY_EVENT_NONE 0x0000 |
No events. | |
#define | RUBY_EVENT_LINE 0x0001 |
Encountered a new line. | |
#define | RUBY_EVENT_CLASS 0x0002 |
Encountered a new class. | |
#define | RUBY_EVENT_END 0x0004 |
Encountered an end of a class clause. | |
#define | RUBY_EVENT_CALL 0x0008 |
A method, written in Ruby, is called. | |
#define | RUBY_EVENT_RETURN 0x0010 |
Encountered a return statement. | |
#define | RUBY_EVENT_C_CALL 0x0020 |
A method, written in C, is called. | |
#define | RUBY_EVENT_C_RETURN 0x0040 |
Return from a method, written in C. | |
#define | RUBY_EVENT_RAISE 0x0080 |
Encountered a raise statement. | |
#define | RUBY_EVENT_ALL 0x00ff |
Bitmask of traditional events. | |
TracePoint extended events | |
#define | RUBY_EVENT_B_CALL 0x0100 |
Encountered an yield statement. | |
#define | RUBY_EVENT_B_RETURN 0x0200 |
Encountered a next statement. | |
#define | RUBY_EVENT_THREAD_BEGIN 0x0400 |
Encountered a new thread. | |
#define | RUBY_EVENT_THREAD_END 0x0800 |
Encountered an end of a thread. | |
#define | RUBY_EVENT_FIBER_SWITCH 0x1000 |
Encountered a Fiber#yield. | |
#define | RUBY_EVENT_SCRIPT_COMPILED 0x2000 |
Encountered an eval. | |
#define | RUBY_EVENT_RESCUE 0x4000 |
Encountered a rescue statement. | |
#define | RUBY_EVENT_TRACEPOINT_ALL 0xffff |
Bitmask of extended events. | |
Special events | |
#define | RUBY_EVENT_RESERVED_FOR_INTERNAL_USE 0x030000 |
Opaque bits. | |
Internal events | |
@shyouhei 's understanding is that some of them are visible from extension libraries because of ext/objspace. But it seems that doesn't describe everything? The ultimate reason why they are here remains unclear. | |
#define | RUBY_INTERNAL_EVENT_SWITCH 0x040000 |
Thread switched. | |
#define | RUBY_EVENT_SWITCH 0x040000 |
Old name of RUBY_INTERNAL_EVENT_SWITCH. | |
#define | RUBY_INTERNAL_EVENT_NEWOBJ 0x100000 |
Object allocated. | |
#define | RUBY_INTERNAL_EVENT_FREEOBJ 0x200000 |
Object swept. | |
#define | RUBY_INTERNAL_EVENT_GC_START 0x400000 |
GC started. | |
#define | RUBY_INTERNAL_EVENT_GC_END_MARK 0x800000 |
GC ended mark phase. | |
#define | RUBY_INTERNAL_EVENT_GC_END_SWEEP 0x1000000 |
GC ended sweep phase. | |
#define | RUBY_INTERNAL_EVENT_GC_ENTER 0x2000000 |
gc_enter() is called. | |
#define | RUBY_INTERNAL_EVENT_GC_EXIT 0x4000000 |
gc_exit() is called. | |
#define | RUBY_INTERNAL_EVENT_OBJSPACE_MASK 0x7f00000 |
Bitmask of GC events. | |
#define | RUBY_INTERNAL_EVENT_MASK 0xffff0000 |
Bitmask of internal events. |
Typedefs | |
typedef uint32_t | rb_event_flag_t |
Represents event(s). | |
typedef void(* | rb_event_hook_func_t) (rb_event_flag_t evflag, VALUE data, VALUE self, ID mid, VALUE klass) |
Type of event hooks. |
Functions | |
void | rb_add_event_hook (rb_event_hook_func_t func, rb_event_flag_t events, VALUE data) |
Registers an event hook function. | |
int | rb_remove_event_hook (rb_event_hook_func_t func) |
Removes the passed function from the list of event hooks. |
Debugging and tracing APIs.
Definition in file event.h.
#define RB_EVENT_HOOKS_HAVE_CALLBACK_DATA 1 |
#define RUBY_EVENT_B_CALL 0x0100 |
#define RUBY_EVENT_B_RETURN 0x0200 |
Encountered a next statement.
Definition at line 56 of file event.h.
Referenced by rb_tracearg_return_value().
#define RUBY_EVENT_C_CALL 0x0020 |
A method, written in C, is called.
Definition at line 43 of file event.h.
Referenced by rb_tracearg_binding().
#define RUBY_EVENT_C_RETURN 0x0040 |
Return from a method, written in C.
Definition at line 44 of file event.h.
Referenced by rb_tracearg_binding(), and rb_tracearg_return_value().
#define RUBY_EVENT_CALL 0x0008 |
#define RUBY_EVENT_END 0x0004 |
#define RUBY_EVENT_FIBER_SWITCH 0x1000 |
#define RUBY_EVENT_RAISE 0x0080 |
Encountered a raise statement.
Definition at line 45 of file event.h.
Referenced by rb_tracearg_raised_exception().
#define RUBY_EVENT_RESCUE 0x4000 |
Encountered a rescue statement.
Definition at line 61 of file event.h.
Referenced by rb_tracearg_raised_exception().
#define RUBY_EVENT_RESERVED_FOR_INTERNAL_USE 0x030000 |
#define RUBY_EVENT_RETURN 0x0010 |
Encountered a return statement.
Definition at line 42 of file event.h.
Referenced by rb_tracearg_return_value().
#define RUBY_EVENT_SCRIPT_COMPILED 0x2000 |
#define RUBY_EVENT_THREAD_BEGIN 0x0400 |
#define RUBY_EVENT_THREAD_END 0x0800 |
#define RUBY_EVENT_TRACEPOINT_ALL 0xffff |
#define RUBY_INTERNAL_EVENT_FREEOBJ 0x200000 |
#define RUBY_INTERNAL_EVENT_GC_END_MARK 0x800000 |
#define RUBY_INTERNAL_EVENT_GC_END_SWEEP 0x1000000 |
#define RUBY_INTERNAL_EVENT_GC_ENTER 0x2000000 |
#define RUBY_INTERNAL_EVENT_GC_EXIT 0x4000000 |
#define RUBY_INTERNAL_EVENT_MASK 0xffff0000 |
#define RUBY_INTERNAL_EVENT_NEWOBJ 0x100000 |
#define RUBY_INTERNAL_EVENT_OBJSPACE_MASK 0x7f00000 |
typedef uint32_t rb_event_flag_t |
typedef void(* rb_event_hook_func_t) (rb_event_flag_t evflag, VALUE data, VALUE self, ID mid, VALUE klass) |
Type of event hooks.
When an event happens registered functions are kicked with appropriate parameters.
[in] | evflag | The kind of event that happened. |
[in] | data | The data passed to rb_add_event_hook(). |
[in] | self | Current receiver. |
[in] | mid | Name of the current method. |
[in] | klass | Current class. |
void rb_add_event_hook | ( | rb_event_hook_func_t | func, |
rb_event_flag_t | events, | ||
VALUE | data ) |
Registers an event hook function.
[in] | func | A callback. |
[in] | events | A set of events that func should run. |
[in] | data | Passed as-is to func. |
Definition at line 207 of file vm_trace.c.
Referenced by rb_add_event_hook().
int rb_remove_event_hook | ( | rb_event_hook_func_t | func | ) |
Removes the passed function from the list of event hooks.
[in] | func | A callback. |
Definition at line 315 of file vm_trace.c.
Referenced by rb_remove_event_hook().