Ruby
3.4.0dev (2024-12-06 revision 892c46283a5ea4179500d951c9d4866c0051f27b)
|
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. More... | |
#define | RUBY_EVENT_LINE 0x0001 |
Encountered a new line. More... | |
#define | RUBY_EVENT_CLASS 0x0002 |
Encountered a new class. More... | |
#define | RUBY_EVENT_END 0x0004 |
Encountered an end of a class clause. More... | |
#define | RUBY_EVENT_CALL 0x0008 |
A method, written in Ruby, is called. More... | |
#define | RUBY_EVENT_RETURN 0x0010 |
Encountered a return statement. More... | |
#define | RUBY_EVENT_C_CALL 0x0020 |
A method, written in C, is called. More... | |
#define | RUBY_EVENT_C_RETURN 0x0040 |
Return from a method, written in C. More... | |
#define | RUBY_EVENT_RAISE 0x0080 |
Encountered a raise statement. More... | |
#define | RUBY_EVENT_ALL 0x00ff |
Bitmask of traditional events. More... | |
TracePoint extended events | |
#define | RUBY_EVENT_B_CALL 0x0100 |
Encountered an yield statement. More... | |
#define | RUBY_EVENT_B_RETURN 0x0200 |
Encountered a next statement. More... | |
#define | RUBY_EVENT_THREAD_BEGIN 0x0400 |
Encountered a new thread. More... | |
#define | RUBY_EVENT_THREAD_END 0x0800 |
Encountered an end of a thread. More... | |
#define | RUBY_EVENT_FIBER_SWITCH 0x1000 |
Encountered a Fiber#yield . More... | |
#define | RUBY_EVENT_SCRIPT_COMPILED 0x2000 |
Encountered an eval . More... | |
#define | RUBY_EVENT_RESCUE 0x4000 |
Encountered a rescue statement. More... | |
#define | RUBY_EVENT_TRACEPOINT_ALL 0xffff |
Bitmask of extended events. More... | |
Special events | |
#define | RUBY_EVENT_RESERVED_FOR_INTERNAL_USE 0x030000 |
Opaque bits. More... | |
Internal events | |
@shyouhei's understanding is that some of them are visible from extension libraries because of 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. More... | |
#define | RUBY_EVENT_SWITCH 0x040000 |
Old name of RUBY_INTERNAL_EVENT_SWITCH. More... | |
#define | RUBY_INTERNAL_EVENT_NEWOBJ 0x100000 |
Object allocated. More... | |
#define | RUBY_INTERNAL_EVENT_FREEOBJ 0x200000 |
Object swept. More... | |
#define | RUBY_INTERNAL_EVENT_GC_START 0x400000 |
GC started. More... | |
#define | RUBY_INTERNAL_EVENT_GC_END_MARK 0x800000 |
GC ended mark phase. More... | |
#define | RUBY_INTERNAL_EVENT_GC_END_SWEEP 0x1000000 |
GC ended sweep phase. More... | |
#define | RUBY_INTERNAL_EVENT_GC_ENTER 0x2000000 |
gc_enter() is called. More... | |
#define | RUBY_INTERNAL_EVENT_GC_EXIT 0x4000000 |
gc_exit() is called. More... | |
#define | RUBY_INTERNAL_EVENT_OBJSPACE_MASK 0x7f00000 |
Bitmask of GC events. More... | |
#define | RUBY_INTERNAL_EVENT_MASK 0xffff0000 |
Bitmask of internal events. More... | |
Typedefs | |
typedef uint32_t | rb_event_flag_t |
Represents event(s). More... | |
typedef void(* | rb_event_hook_func_t) (rb_event_flag_t evflag, VALUE data, VALUE self, ID mid, VALUE klass) |
Type of event hooks. More... | |
Functions | |
void | rb_add_event_hook (rb_event_hook_func_t func, rb_event_flag_t events, VALUE data) |
Registers an event hook function. More... | |
int | rb_remove_event_hook (rb_event_hook_func_t func) |
Removes the passed function from the list of event hooks. More... | |
Debugging and tracing APIs.
RBIMPL
or rbimpl
are implementation details. Don't take them as canon. They could rapidly appear then vanish. The name (path) of this header file is also an implementation detail. Do not expect it to persist at the place it is now. Developers are free to move it anywhere anytime at will. __VA_ARGS__
is always available. We assume C99 for ruby itself but we don't assume languages of extension libraries. They could be written in C++98. Definition in file event.h.
#define RB_EVENT_HOOKS_HAVE_CALLBACK_DATA 1 |
Exists here for backwards compatibility only. You can safely forget about it.
#define RUBY_EVENT_B_CALL 0x0100 |
#define RUBY_EVENT_B_RETURN 0x0200 |
#define RUBY_EVENT_C_CALL 0x0020 |
#define RUBY_EVENT_C_RETURN 0x0040 |
#define RUBY_EVENT_CALL 0x0008 |
#define RUBY_EVENT_END 0x0004 |
#define RUBY_EVENT_FIBER_SWITCH 0x1000 |
#define RUBY_EVENT_RAISE 0x0080 |
#define RUBY_EVENT_RESCUE 0x4000 |
#define RUBY_EVENT_RESERVED_FOR_INTERNAL_USE 0x030000 |
#define RUBY_EVENT_RETURN 0x0010 |
#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_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.
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. |
func
it is quite possible for the return value to become more than one. Definition at line 315 of file vm_trace.c.