当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby TracePoint.new用法及代码示例


本文简要介绍ruby语言中 TracePoint.new 的用法。

用法

new(*events) { |obj| block } → obj

返回一个新的 TracePoint 对象,默认情况下未启用。

接下来,为了激活跟踪,您必须使用 TracePoint#enable

trace = TracePoint.new(:call) do |tp|
    p [tp.lineno, tp.defined_class, tp.method_id, tp.event]
end
#=> #<TracePoint:disabled>

trace.enable
#=> false

puts "Hello, TracePoint!"
# ...
# [48, IRB::Notifier::AbstractNotifier, :printf, :call]
# ...

当您想停用跟踪时,您必须使用 TracePoint#disable

trace.disable

有关可能的事件和更多信息,请参阅TracePoint 的事件。

必须给出一个块,否则会引发 ArgumentError

如果跟踪方法未包含在给定的事件过滤器中,则会引发 RuntimeError

TracePoint.trace(:line) do |tp|
    p tp.raised_exception
end
#=> RuntimeError: 'raised_exception' not supported by this event

如果在块外调用跟踪方法,则会引发 RuntimeError

TracePoint.trace(:line) do |tp|
  $tp = tp
end
$tp.lineno #=> access from outside (RuntimeError)

其他线程的访问也是被禁止的。

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 TracePoint.new。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。