トップページへ

Rubyで実行ラインのトレース結果をファイルに出力する方法

小粋空間 » Programming Language » Ruby » 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は、埋め込んだ位置によって正常に動作しないようです。

« 前の記事へ

次の記事へ »

トップページへ