Ruby 2.5.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > TracePointクラス > new
new(*events) {|obj| ... } -> TracePoint
[permalink][rdoc]新しい TracePoint オブジェクトを作成して返します。トレースを有効にするには TracePoint#enable を実行してください。
trace = TracePoint.new(:call) do |tp|
p [tp.lineno, tp.defined_class, tp.method_id, tp.event]
end
# => #<TracePoint:0x007f17372cdb20>
trace.enable
# => false
puts "Hello, TracePoint!"
# ...
# [69, IRB::Notifier::AbstractNotifier, :printf, :call]
# ...
トレースを無効にするには TracePoint#disable を実行してください。
trace.disable
式の評価。
クラス定義、特異クラス定義、モジュール定義への突入。
クラス定義、特異クラス定義、モジュール定義の終了。
Ruby で記述されたメソッドの呼び出し。
Ruby で記述されたメソッド呼び出しからのリターン。
C で記述されたメソッドの呼び出し。
C で記述されたメソッド呼び出しからのリターン。
例外の発生。
ブロックの開始。
ブロックの終了。
スレッドの開始。
スレッドの終了。
ファイバーの切り替え。
指定イベントに関連しない情報を取得するメソッドを実行した場合には 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)
他のスレッドから参照する事も禁じられています。