あなたは「トレース」機能について話している。
shellやgood-ol'GWBasicなどの一部の言語には、現在実行中の行を示すフラグがあります。Rubyの$DEBUG
出力は、コードからではなく、それを探して現在の状態をダンプしたり、トレースをオンにしたりするgemからの情報過多でいっぱいになる可能性があります。
多くの人puts
は、開発/テスト中に、コードに自分がどこにいるかを示す指標を表示させるためにコードを振りかけます。その場合は、出力をボトルネックにし、簡単にオン/オフを切り替える方法として作成することをお勧めします。また、フラグを使用して、デバッグするかどうかを確認します。OptionParserを使用--debug
して、コマンドラインで渡すフラグを作成することもできます。メソッドを使用することのもう1つの優れた副作用は、出力をファイルにリダイレクトして、tail
発生した出力を監視し、後でトリアージに使用するのが簡単なことです。
もう1つの方法は、コードをデバッガーにロードして、トレースするように指示することです。コードのすべてのステップが表示されます。これは非常に冗長ですが、詳細は良好です。また、特定のポイントまで実行するように指示して、コードを調べて掘り下げ、必要に応じてIRBにドロップすることもできます。
個人的には、昔ながらのアセンブリ言語に慣れているので、デバッガーに慣れているので、Rubyをよく使用します。特定の場所まで実行して停止するように指示するのは簡単です。またはinclude 'debugger'; debugger
、コードに埋め込んでその時点で停止することもできます。そこに到達したら、何が起こっているかを確認して続行し、ステートメントに再びc
ヒットするまでプログラムを実行させることができます。debugger
デバッガーは非常に強力で、何が起こっているのかを知りたいときに適した選択的な拡大鏡であることがわかりました。
「Rubyでのデバッグ」には、役立つヒントがたくさんあります。
編集:
私はRubyを調べるというAlexDの提案が好きset_trace_func
です。私はそれを使用していません(そして、率直に言ってそれを忘れました)が、それはアプリで素晴らしいトレースを設定するための良い方法でしょう。小さなコードで、オン/オフを切り替えて、呼び出されることを制御できるため、特定のクラスまたは条件を指定して選択的に出力するように設定できますproc
。