概要
Rubyスクリプトの実行の過程をトレースする.デバッグする際には知っておくと便利である.
トレースできる情報スクリプトの1行の実行,関数呼び出し・復帰,などがある.
使い方
使い方は,次の2通りいずれかを使用する.
rubyコマンドのコマンドラインに次を使用する.
ruby -rtracer hoge.rb
スクリプト内部に次を追加する.
require "tracer"
Tracer.on
... この間がトレースされる ...
Tracer.off
例 とにかくトレースする
次のスクリプトを例に説明する.
#!/usr/bin/env ruby
class Hoge
def initialize()
puts "Hoge.initialize()"
end
def print()
puts "Hoge.print()"
end
end
hoge = Hoge.new
hoge.print
この実行をトレースするには,次のようにスクリプトを書き換える.
#!/usr/bin/env ruby
require 'tracer'
class Hoge
def initialize()
puts "Hoge.initialize()\n"
end
def print()
puts "Hoge.print()\n"
end
end
Tracer.on
hoge = Hoge.new
hoge.print
Tracer.off
これを実行結果は次の出力する.
#0:hoge.rb:17::-: hoge = Hoge.new
#0:hoge.rb:17:Class:>: hoge = Hoge.new
#0:hoge.rb:6:Hoge:>: def initialize()
#0:hoge.rb:7:Hoge:-: puts "Hoge.initialize()\n"
#0:hoge.rb:7:Kernel:>: puts "Hoge.initialize()\n"
#0:hoge.rb:7:IO:>: puts "Hoge.initialize()\n"
Hoge.initialize()
#0:hoge.rb:7:IO:<: puts "Hoge.initialize()\n"
#0:hoge.rb:7:Kernel:<: puts "Hoge.initialize()\n"
#0:hoge.rb:7:Hoge:<: puts "Hoge.initialize()\n"
#0:hoge.rb:17:Class:<: hoge = Hoge.new
#0:hoge.rb:18::-: hoge.print
#0:hoge.rb:10:Hoge:>: def print()
#0:hoge.rb:11:Hoge:-: puts "Hoge.print()\n"
#0:hoge.rb:11:Kernel:>: puts "Hoge.print()\n"
#0:hoge.rb:11:IO:>: puts "Hoge.print()\n"
Hoge.print()
#0:hoge.rb:11:IO:<: puts "Hoge.print()\n"
#0:hoge.rb:11:Kernel:<: puts "Hoge.print()\n"
#0:hoge.rb:11:Hoge:<: puts "Hoge.print()\n"
#0:hoge.rb:20::-: Tracer.off
クラス名の次に示されている記号の意味は次の通り.
- - そのラインを実行
- > 関数コール
- < 関数からの復帰