# tracer.rb

## 目的・概要

実行トレース出力をとる機能を提供する。

使い方は大きく分けて2通り。

`ruby -rtracer hoge.rb`

  hoge.rbの実行をすべてトレース出力する。

`require 'tracer'`

  `Tracer.on` によりトレース出力を有効にする。

  `Tracer.off` によりトレース出力を無効にする。

  また、ブロック付きで `Tracer.on` を呼び出すと、そのブロック内のみ トレースを出力する。

## サンプルコード

なし

## class Tracer

### クラスメソッド

`Tracer.on`
`Tracer.on {...}`

  トレース出力を開始。 ブロックを与えられた場合はそのブロック内のみトレース出力を行う。

`Tracer.off`

  トレース出力を中断。

`Tracer.set_get_line_procs(filename, proc)`
`Tracer.set_get_line_procs(filename) { |line| ...}`

  あるファイルについて利用する、行番号からソースのその行の内容を返す 手続きを指定する。何も指定しなければデフォルトの動作が利用される。 指定する手続きは行番号を唯一の引数として呼び出される。

`Tracer.add_filter(proc)`
`Tracer.add_filter { |event,file,line,id,binding| ...}`

  トレース出力するかどうかを決定するフィルタを追加する。 何もフィルタを与えない場合はすべての行についてトレース情報が出力される。 与えられた手続き(ブロックまたはProcオブジェクト)が真を返せば トレースは出力される。 フィルタは複数追加でき、そのうち一つでも偽を返すとトレースの出力は 抑制される。 フィルタ手続きは引数として event,file,line,id,binding の5つ をとる(組み込み関数set_trace_funcで指定するものとほぼ同じ)。 set_trace_funcに関してはRuby本 p.391を参照。

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

    Ruby本 p.391より。

    event

      イベントを表す文字列。

      以下の種類がある。カッコ内はtracer.rbの出力での表記。

      line (-)

        ある行を実行

      call (>)

        メソッド呼び出し

      return (<)

        メソッドからのリターン

      class (C)

        クラスコンテキストに入った

      end (E)

        クラスコンテキストから出た

      raise

        例外が発生した

      c-call

        Cで記述されたメソッドが呼ばれた

      c-return

        Cで記述されたメソッドからreturn

    file

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

    line

      現在処理している行番号

    id

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

    binding

      現在のコンテキスト

## SEE ALSO

- set_trace_func

link: [組み込み関数]
reverse links: [組み込み関数] [添付ライブラリ]