You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
rubyworks edited this page Sep 13, 2010
·
3 revisions
TracePoint is a Binding with the addition of event information. In theory it would function very well as the join-point for AOP. In practice it provides a better approach to #set_trace_func.
FEATURES
More versatile than #set_trace_func.
Easy to set multiple traces.
SYNOPSIS
Using TracePoint is simply a matter of setting the #trace procedure. For example to watch everything that happens during a Ruby process:
TracePoint.trace do |tp|
puts "#{tp.self.class}\t#{tp.callee}\t#{tp.event}\t#{tp.return?}"
end
TracePoint.activate
1 + 1
Tracing can be deactived and reactivated on the fly by calling #deactivate and #activate.
To add additional trace procedures, simply call the #trace method again. Trace procedures can also be named by providing a name argument to the #trace method. This allows traces to be added and removed without affecting other traces.
TracePoint.trace(:class_trace) do |tp|
puts tp.self.class
end
TracePoint.trace(:method_trace) do |tp|
puts tp.callee
end
# ...
TracePoint.clear(:class_trace)
Calling #clear with no arguments will remove all trace procedures and deactivate tracing.
Please see the API documentation for more information.