Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Kernelモジュール > set_trace_func
set_trace_func(proc) -> objectset_trace_func {|event, file, line, id, binding, klass| ... } -> ProcRuby インタプリタのイベントをトレースする Proc オブジェクトとして 指定された proc を登録します。 proc に nil を指定した場合でトレースをオフにします。 ブロックを指定された場合はそのブロックをトレースする Proc オブジェクトとして登録します。
引数 proc かブロックを Proc オブジェクトに変換したものを返します。
Ruby インタプリタがプログラムを実行する過程で、メソッドの呼び出しや 式の評価などのイベントが発生する度に、以下で説明する6個の引数とともに 登録された Proc オブジェクトを実行します。
標準添付の debug、tracer、 profile はこの組み込み関数を利用して実現されています。
実行のタイプを表す、以下のいずれかの文字列。
"line": 式の評価。 "call": メソッドの呼び出し。 "return": メソッド呼び出しからのリターン。 "c-call": Cで記述されたメソッドの呼び出し。 "c-return": Cで記述されたメソッド呼び出しからのリターン。 "class": クラス定義、特異クラス定義、モジュール定義への突入。 "end": クラス定義、特異クラス定義、モジュール定義の終了。 "raise": 例外の発生。
実行中のプログラムのソースファイル名 (文字列)。
実行中のプログラムのソースファイル上の行番号 (整数)。
event に応じ、以下のものが渡されます。 第六ブロック引数の klass と対応しています。
line
最後に呼び出されたメソッドを表す Symbol オブジェクト。
トップレベルでは nil。
call/return/c-call/c-return
呼び出された/リターンするメソッドを表す Symbol オブジェクト。
class/end
nil。
raise
最後に呼び出されたメソッドを表す Symbol オブジェクト。
トップレベルでは nil。
実行中のプログラムのコンテキストを表す Binding オブジェクト。
event に応じ、以下のものが渡されます。 第四ブロック引数の id と対応しています。
line
最後に呼び出されたメソッドが属するクラスを表す
Class オブジェクト。トップレベルでは false。
call/return/c-call/c-return
呼び出された/リターンするメソッドが属するクラス
を表す Class オブジェクト。
class/end
false。
raise
最後に呼び出されたメソッドが属するクラスを表す
Class オブジェクト。トップレベルでは false。
例:
set_trace_func lambda {|*arg|
p arg
}
class Foo
end
43.to_s
#----結果----
#["line", "..", 4, nil, #<Binding:0x2b69584>, false]
# ["c-call", "..", 4, :inherited, #<Binding:0x2b693b8>, Class]
# ["c-return", "..", 4, :inherited, #<Binding:0x2b6937c>, Class]
# ["class", "..", 4, nil, #<Binding:0x2b69098>, false]
# ["end", "..", 4, nil, nil, false]
# ["line", "..", 6, nil, #<Binding:0x2b68d78>, false]
# ["c-call", "..", 6, :to_s, #<Binding:0x2b68c88>, Fixnum]
# ["c-return", "..", 6, :to_s, #<Binding:0x2b68aa8>, Fixnum]
[SEE_ALSO] Kernel.#caller