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

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

Posted at February 22,2022 10:22 PM
Tag:[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は、埋め込んだ位置によって正常に動作しないようです。

関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)