diff options
author | Jeremy Evans <code@jeremyevans.net> | 2021-04-26 15:21:52 -0700 |
---|---|---|
committer | Jeremy Evans <code@jeremyevans.net> | 2021-04-26 15:21:52 -0700 |
commit | d585799d7303abeb1b0ca6fc868f0b2d76a26250 (patch) | |
tree | 5e85b1064f430a99a243077051d5912637900d9d /trace_point.rb | |
parent | 203eeeefddb3ae6c0e129ad9cd99da804c2cbaba (diff) |
Document binding behavior for C call/return events for TracePoint/set_trace_func
C methods do not have bindings, so binding returns the binding of
the nearest C method.
Fixes [Bug #9009]
Diffstat (limited to 'trace_point.rb')
-rw-r--r-- | trace_point.rb | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/trace_point.rb b/trace_point.rb index d68eed4248..2e85369e65 100644 --- a/trace_point.rb +++ b/trace_point.rb @@ -309,15 +309,21 @@ class TracePoint Primitive.tracepoint_attr_defined_class end - # Return the generated binding object from event + # Return the generated binding object from event. + # + # Note that for +c_call+ and +c_return+ events, the binding returned is the + # binding of the nearest Ruby method calling the C method, since C methods + # themselves do not have bindings. def binding Primitive.tracepoint_attr_binding end # Return the trace object during event # - # Same as TracePoint#binding: - # trace.binding.eval('self') + # Same as the following, except it returns the correct object (the method + # receiver) for +c_call+ and +c_return+ events: + # + # trace.binding.eval('self') def self Primitive.tracepoint_attr_self end |