Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > tracerライブラリ > Tracerクラス > add_filter

singleton method Tracer.add_filter

add_filter(proc)[permalink][rdoc]
add_filter {|event, file, line, id, binding, klass| .... }

トレース出力するかどうかを決定するフィルタを追加します。 何もフィルタを与えない場合はすべての行についてトレース情報が出力されます。 与えられた手続き(ブロックまたはProcオブジェクト)が真を返せば トレースは出力されます。

ruby 1.8 ではブロックを与えると警告がでます。

フィルタは複数追加でき、 そのうち一つでも偽を返すとトレースの出力は抑制されます。

[PARAM] proc:
トレース出力するかどうかを決定する手続きオブジェクトを指定します。 通常、true か falseを返す必要があります。

フィルタ手続きは引数として event, file, line, id, binding, klass の 6 つをとります。 Kernel.#set_trace_func で指定するものとほぼ同じです。

フィルタ手続きのパラメータ

event

イベントを表す文字列。 以下の種類がある。カッコ内は tracer の出力での表記。

  * line (-)   ある行を実行
  * call (>)   メソッド呼び出し
  * return (<) メソッドからのリターン
  * class (C)  クラスコンテキストに入った
  * end (E)    クラスコンテキストから出た
  * raise      例外が発生した
  * c-call     Cで記述されたメソッドが呼ばれた
  * c-return   Cで記述されたメソッドからreturn
file

現在処理しているファイルの名前

line

現在処理している行番号

id

最後に呼び出されたメソッドのメソッド名(のシンボル) そのようなメソッドがなければ0になる。

binding

現在のコンテキスト

klass

現在呼び出されているメソッドのクラスオブジェクト。