diff options
author | Jeremy Evans <code@jeremyevans.net> | 2021-12-27 12:52:04 -0800 |
---|---|---|
committer | Jeremy Evans <code@jeremyevans.net> | 2022-03-29 18:14:33 -0700 |
commit | 9c1d32a7ada794ecd0356d56f7be3cdf3982d8ac (patch) | |
tree | 5b7cbe2b28d0c627b19d32108241bfa013670852 /trace_point.rb | |
parent | 6d3f447aecfb56f7d3edbdf9cc68e748e150d7d8 (diff) |
Make TracePoint#enable with block target current thread by default
If TracePoint#enable is passed a block, it previously started
the trace on all threads. This changes it to trace only the
current thread by default. To limit the scope of the change,
the current thread is only used by default if target and
target_line are both nil. You can pass target_thread: nil
to enable tracing on all threads, to get the previous
default behavior.
Fixes [Bug #16889]
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/5359
Diffstat (limited to 'trace_point.rb')
-rw-r--r-- | trace_point.rb | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/trace_point.rb b/trace_point.rb index 85ebac9aa7..866c807821 100644 --- a/trace_point.rb +++ b/trace_point.rb @@ -153,7 +153,7 @@ class TracePoint # call-seq: # trace.enable(target: nil, target_line: nil, target_thread: nil) -> true or false - # trace.enable(target: nil, target_line: nil, target_thread: nil) { block } -> obj + # trace.enable(target: nil, target_line: nil, target_thread: Thread.current) { block } -> obj # # Activates the trace. # @@ -168,14 +168,15 @@ class TracePoint # # trace is still enabled # # If a block is given, the trace will only be enabled within the scope of the - # block. + # block. If target and target_line are both nil, then target_thread will default + # to the current thread if a block is given. # # trace.enabled? # #=> false # # trace.enable do # trace.enabled? - # # only enabled for this block + # # only enabled for this block and thread # end # # trace.enabled? @@ -208,7 +209,7 @@ class TracePoint # trace.enable { p tp.lineno } # #=> RuntimeError: access from outside # - def enable(target: nil, target_line: nil, target_thread: nil) + def enable(target: nil, target_line: nil, target_thread: (Thread.current if target.nil? && target_line.nil? && defined?(yield))) Primitive.tracepoint_enable_m(target, target_line, target_thread) end |