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


Ruby TracePoint类用法及代码示例


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

Document-class: TracePoint

在面向对象的 API 中提供 Kernel#set_trace_func 函数的类。

示例

我们可以使用 TracePoint 专门针对异常收集信息:

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

trace.enable
#=> false

0 / 0
#=> [5, :raise, #<ZeroDivisionError: divided by 0>]

事件

如果您未指定要侦听的事件类型, TracePoint 将包括所有可用事件。

注意不要依赖于当前的事件集,因为此列表可能会发生变化。相反,建议您指定要使用的事件类型。

要过滤跟踪的内容,您可以将以下任何内容作为 events 传递:

:line

在新行上执行表达式或语句

:class

开始一个类或模块定义

:end

完成一个类或模块定义

:call

调用 Ruby 方法

:return

从 Ruby 方法返回

:c_call

调用 C-language 例程

:c_return

从 C-language 例程返回

:raise

引发异常

:b_call

块入口处的事件钩子

:b_return

块结束时的事件钩子

:a_call

所有调用的事件钩子( callb_callc_call )

:a_return

所有返回的事件钩子( returnb_returnc_return )

:thread_begin

线程开始处的事件钩子

:thread_end

线程结束时的事件钩子

:fiber_switch

光纤交换机上的事件钩子

:script_compiled

编译新的 Ruby 代码(使用 evalloadrequire )

相关用法


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