mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* vm_trace.c (rb_tracepoint_new): Add documentation for
rb_tracepoint_new C level API [ci skip] Provided by @emilsoman. [fix GH-869] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50321 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
d9a2b3480e
commit
0e78899591
2 changed files with 36 additions and 0 deletions
|
@ -1,3 +1,9 @@
|
|||
Wed Apr 15 17:36:51 2015 Koichi Sasada <ko1@atdot.net>
|
||||
|
||||
* vm_trace.c (rb_tracepoint_new): Add documentation for
|
||||
rb_tracepoint_new C level API [ci skip]
|
||||
Provided by @emilsoman. [fix GH-869]
|
||||
|
||||
Wed Apr 15 10:37:40 2015 SHIBATA Hiroshi <hsbt@ruby-lang.org>
|
||||
|
||||
* doc/contributors.rdoc: fix a typo. Patch by @davydovanton
|
||||
|
|
30
vm_trace.c
30
vm_trace.c
|
@ -1171,6 +1171,36 @@ tracepoint_new(VALUE klass, rb_thread_t *target_th, rb_event_flag_t events, void
|
|||
return tpval;
|
||||
}
|
||||
|
||||
/*
|
||||
* Creates a tracepoint by registering a callback function for one or more
|
||||
* tracepoint events. Once the tracepoint is created, you can use
|
||||
* rb_tracepoint_enable to enable the tracepoint.
|
||||
*
|
||||
* Parameters:
|
||||
* 1. VALUE target_thval - Meant for picking the thread in which the tracepoint
|
||||
* is to be created. However, current implementation ignore this parameter,
|
||||
* tracepoint is created for all threads. Simply specify Qnil.
|
||||
* 2. rb_event_flag_t events - Event(s) to listen to.
|
||||
* 3. void (*func)(VALUE, void *) - A callback function.
|
||||
* 4. void *data - Void pointer that will be passed to the callback function.
|
||||
*
|
||||
* When the callback function is called, it will be passed 2 parameters:
|
||||
* 1)VALUE tpval - the TracePoint object from which trace args can be extracted.
|
||||
* 2)void *data - A void pointer which helps to share scope with the callback function.
|
||||
*
|
||||
* It is important to note that you cannot register callbacks for normal events and internal events
|
||||
* simultaneously because they are different purpose.
|
||||
* You can use any Ruby APIs (calling methods and so on) on normal event hooks.
|
||||
* However, you can not use any Ruby APIs (even object creations).
|
||||
* This is why we can't specify internal events by TracePoint directly.
|
||||
* Limitations are MRI version specific.
|
||||
*
|
||||
* Example:
|
||||
* rb_tracepoint_new(Qnil, RUBY_INTERNAL_EVENT_NEWOBJ | RUBY_INTERNAL_EVENT_FREEOBJ, obj_event_i, data);
|
||||
*
|
||||
* In this example, a callback function obj_event_i will be registered for
|
||||
* internal events RUBY_INTERNAL_EVENT_NEWOBJ and RUBY_INTERNAL_EVENT_FREEOBJ.
|
||||
*/
|
||||
VALUE
|
||||
rb_tracepoint_new(VALUE target_thval, rb_event_flag_t events, void (*func)(VALUE, void *), void *data)
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue