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


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