End of Life Ruby 3.0 has reached end of life and gets no more fixes. Switch to Ruby 4.0 →
instance method
TracePoint#enable
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_point.rb
View on GitHub ↗
# File tmp/rubies/ruby-3.0.5/trace_point.rb, line 195
def enable(target: nil, target_line: nil, target_thread: nil)
Primitive.tracepoint_enable_m(target, target_line, target_thread)
end
Activates the trace.
Returns true if trace was enabled. Returns false if trace was disabled.
Example
trace.enabled? #=> false trace.enable #=> false (previous state) # trace is enabled trace.enabled? #=> true trace.enable #=> true (previous state) # trace is still enabled
If a block is given, the trace will only be enabled within the scope of the block.
Example
trace.enabled? #=> false trace.enable do trace.enabled? # only enabled for this block end trace.enabled? #=> false
target, target_line and target_thread parameters are used to limit tracing only to specified code objects. target should be a code object for which RubyVM::InstructionSequence.of will return an instruction sequence.
Example
t = TracePoint.new(:line) { |tp| p tp } def m1 p 1 end def m2 p 2 end t.enable(target: method(:m1)) m1 # prints #<TracePoint:line test.rb:4 in `m1'> m2 # prints nothing
Note: You cannot access event hooks within the enable block.
Example
trace.enable { p tp.lineno } #=> RuntimeError: access from outside