當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。