要約
実行トレース出力をとる機能を提供するクラスです。
目次
- 特異メソッド
- インスタンスメソッド
- 定数
特異メソッド
add_filter(proc)
[permalink][rdoc][edit]add_filter {|event, file, line, id, binding, klass| .... }
-
トレース出力するかどうかを決定するフィルタを追加します。何もフィルタを与えない場合はすべての行についてトレース情報が出力されます。与えられた手続き(ブロックまたはProcオブジェクト)が真を返せばトレースは出力されます。
フィルタは複数追加でき、そのうち一つでも偽を返すとトレースの出力は抑制されます。
- [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
-
現在呼び出されているメソッドのクラスオブジェクト。
display_c_call -> bool
[permalink][rdoc][edit]display_c_call? -> bool
-
真ならば、ビルトインメソッドの呼び出しを表示します。デフォルトは偽です。
display_c_call=(flag)
[permalink][rdoc][edit]-
ビルトインメソッドの呼び出しを表示するかどうかを設定します。
- [PARAM] flag:
- ビルトインメソッドの呼び出しを表示するならば、真を指定します。
display_process_id -> bool
[permalink][rdoc][edit]display_process_id? -> bool
-
真ならば、プロセス ID を表示します。デフォルトは、偽です。
display_process_id=(flag)
[permalink][rdoc][edit]-
プロセス ID を表示するかどうかを設定します。
- [PARAM] flag:
- プロセス ID を表示するならば、真を指定します。
display_thread_id -> bool
[permalink][rdoc][edit]display_thread_id? -> bool
-
真ならば、スレッド ID を表示します。デフォルトは、真です。
display_thread_id=(flag)
[permalink][rdoc][edit]-
スレッド ID を表示するかどうかを設定します。
- [PARAM] flag:
- スレッド ID を表示するならば、真を指定します。
new
[permalink][rdoc][edit]-
自身を初期化します。
off -> nil
[permalink][rdoc][edit]-
トレース出力を中断します。トレース出力を開始するには、Tracer.onを使用します。
[SEE_ALSO] Tracer.on
on -> nil
[permalink][rdoc][edit]on {...}
-
トレース出力を開始します。ブロックを与えられた場合はそのブロック内のみトレース出力を行います。
require 'tracer' Tracer.on class Test def test b = 2 end end t = Test.new t.test
[SEE_ALSO] Tracer.off
set_get_line_procs(filename, proc)
[permalink][rdoc][edit]set_get_line_procs(filename) {|line| .... }
-
あるファイルについて利用する、行番号からソースのその行の内容を返す手続きを指定します。何も指定しなければデフォルトの動作が利用されます。指定する手続きは行番号を唯一の引数として呼び出されます。
- [PARAM] filename:
- ソースファイルの場所を文字列で指定します。
- [PARAM] proc:
- 通常、文字列を返す手続きオブジェクトを指定します。
# 例 dummy.rb の3行目から6 行目のトレース出力に !! をつける require 'tracer' Tracer.set_get_line_procs('./dummy.rb'){|line| str = "\n" str = "!!\n" if line >= 3 and line <= 6 str } Tracer.on require 'dummy' dm = Dummy.new puts dm.number =begin # dummy.rb class Dummy def initialize @number = 135 end attr :number end =end
stdout -> object
[permalink][rdoc][edit]-
トレース出力先を参照します。
stdout=(fp)
[permalink][rdoc][edit]-
トレース出力先を変更します。
- [PARAM] fp:
- 新しいトレース出力先を指定します。
require 'tracer' fp = File.open('temptrace.txt', "w") Tracer.stdout = fp Tracer.on { puts "Hello" } fp.close
stdout_mutex -> Mutex
[permalink][rdoc][edit]-
[TODO]
verbose -> bool
[permalink][rdoc][edit]verbose? -> bool
-
真ならばトレース出力の開始や終了を知らせます。
verbose=(flag)
[permalink][rdoc][edit]-
トレース出力の開始や終了を知らせる文字列("Trace on"または"Trace off")が必要なら真を設定します。
- [PARAM] flag:
- トレース出力の開始や終了を知らせる文字列が必要ならtrueを設定します。
require 'tracer' Tracer.verbose = true Tracer.on { puts "Hello" } # 出力例 Trace on #0:t5.rb:7::-: puts "Hello" #0:t5.rb:7:Kernel:>: puts "Hello" #0:t5.rb:7:IO:>: puts "Hello" Hello#0:t5.rb:7:IO:<: puts "Hello" #0:t5.rb:7:IO:>: puts "Hello" #0:t5.rb:7:IO:<: puts "Hello" #0:t5.rb:7:Kernel:<: puts "Hello" Trace off
インスタンスメソッド
add_filter(p = proc)
[permalink][rdoc][edit]-
[TODO]
フィルターを追加します。
- [PARAM] p:
- Proc オブジェクトを指定します。
get_line(file, line) -> String
[permalink][rdoc][edit]-
[TODO]
- [PARAM] file:
- [PARAM] line:
get_thread_no -> Integer
[permalink][rdoc][edit]-
[TODO]
off -> ()
[permalink][rdoc][edit]-
トレース出力を中断します。
on -> ()
[permalink][rdoc][edit]on { ... } -> ()
-
トレース出力を再開します。
ブロックを与えるとブロックの実行中のみトレースを出力します。
set_get_line_procs(file, p = proc)
[permalink][rdoc][edit]-
[TODO]
stdout -> IO
[permalink][rdoc][edit]-
[SEE_ALSO] Tracer.stdout
trace_func(event, file, line, id, binding, klass, *) -> object | nil
[permalink][rdoc][edit]-
[TODO]
定数
EVENT_SYMBOL
[permalink][rdoc][edit]-
トレース出力のシンボルのハッシュです。下記のような文字列があります。
EVENT_SYMBOL = { "line" => "-", "call" => ">", "return" => "<", "class" => "C", "end" => "E", "c-call" => ">", "c-return" => "<", }
[SEE_ALSO] Tracer.add_filter
Single -> Tracer
[permalink][rdoc][edit]-
[TODO]