Rubyで実行ラインのトレース結果をファイルに出力する方法
業務の都合でRubyを調べることになりました。
最初に、Rubyで実行ラインのトレース結果をファイルに出力する方法を紹介します。
1.問題点
下記の簡単なRubyスクリプトを書きました。
foo = 123
このスクリプトのトレース結果を出力させたいのですが、方法が分かりません。
ということで、Rubyで実行ラインをトレースしてファイルに出力する方法を紹介します。
2.Rubyで実行ラインをトレースしてファイルに出力する方法
標準出力に表示するには、下記の赤字部分を追加します。
require 'tracer'
Tracer.on
foo = 123
Tracer.off
実行結果
# ruby test.rb
#0:test.rb:4::-: foo = 123
#0:test.rb:6::-: Tracer.off
ファイルに表示するには、下記の赤字部分を追加します。
require 'tracer'
fp = File.open('/tmp/foo.txt', "w")
Tracer.stdout = fp
Tracer.on
foo = 123
Tracer.off
実行後の出力ファイル
# cat /tmp/foo.txt
#0:test.rb:6::-: foo = 123
#0:test.rb:8::-: Tracer.off
3.解説
トレーサ用のライブラリを読み込みます。
require 'tracer'
トレース出力を開始したいポイントに「Tracer.on」を記述します。
Tracer.on
トレース出力を終了したいポイントに「Tracer.off」を記述します。
Tracer.off
ファイルに出力する場合は、ファイルを書き込みモードで開きます。
fp = File.open('/tmp/foo.txt', "w")
そしてファイルポインタをトレーサの標準出力先に指定すればOKです。
Tracer.stdout = fp
4.注意事項
Tracer.on/Tracer.offは、埋め込んだ位置によって正常に動作しないようです。
Posted by yujiro このページの先頭に戻る
- ソースからビルドしたrubyをアンインストールする方法
- Apache+Ruby+PostgreSQLによるパフォーマンスチューニングのまとめ
トラックバックURL
コメントする
greeting