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


Ruby TracePoint.enable用法及代碼示例

本文簡要介紹ruby語言中 TracePoint.enable 的用法。

用法

enable(target: nil, target_line: nil, target_thread: nil) → true or false
enable(target: nil, target_line: nil, target_thread: nil) { block } → obj

激活跟蹤。

如果啟用了跟蹤,則返回 true。如果禁用了跟蹤,則返回 false

trace.enabled?  #=> false
trace.enable    #=> false (previous state)
                #   trace is enabled
trace.enabled?  #=> true
trace.enable    #=> true (previous state)
                #   trace is still enabled

如果給定一個塊,則僅在該塊的範圍內啟用跟蹤。

trace.enabled?
#=> false

trace.enable do
  trace.enabled?
  # only enabled for this block
end

trace.enabled?
#=> false

targettarget_linetarget_thread 參數用於限製僅對指定代碼對象的跟蹤。 target 應該是代碼對象, RubyVM::InstructionSequence.of 將為其返回指令序列。

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

注意:您無法訪問 enable 塊內的事件鉤子。

trace.enable { p tp.lineno }
#=> RuntimeError: access from outside

相關用法


注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 TracePoint.enable。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。