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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。