注:実際には回答を投稿しますが、他の提案は大歓迎です!
コメントが私の目標を疑問視するのを防ぐために、この質問には少し文脈が必要です... :-)
私が働いている場所では、多くのデバッグを使用していますが、ほとんどはEclipseで行われます。優れた設計と分析、および適切な単体テストによってバグの分析が容易になると主張して、デバッグの実践に疑問を呈する人がいることを私は知っています。
ええと、私はJava 1.2(または1.1)が最新バージョンであったときに設計されたレガシーアプリケーションの大規模なコードベース(Java / Swing)に取り組んでおり、コードには多くの問題があり、何年にもわたって取り組んだ後でも、それの10%以上を知っているふりをすることはできません!そして、私たちが持っているJUnitテストは、せいぜいコードのおそらく1%をカバーしています(これはここでの最近の慣習です...)。
したがって、優れたデバッガーを使用して、クラス、クラス内のデータ、提供するデータの種類を使用したソフトウェアの動作などを調べることが重要です。
ただし、ステップバイステップには限界があります。速度が遅くなる可能性があり、内容を見逃す可能性があります。また、paint()メソッドを調べたり、マルチスレッドパーツを使用したりする場合など、実用的でない場合もあります。
そのため、これらの困難なケースでは、いくつかのステートメントをあちこちに散りばめ、System.out.println()
どのメソッドがどのパラメーターで、どの順序で呼び出されるかを確認する習慣をつけました。ログを使用できますが、この方法の方が簡単です。問題が解決した後、これらの行を削除します。
その慣行の1つの問題は、コミットする前に、これらの行を削除するためにdiffを精査する必要があることです。もう1つの問題は、PerforceをVCSとして使用することです。これは問題ありませんが、そのようなトレースを追加するには、ファイルを明示的にチェックアウトする(読み取り専用から書き込み可能に状態を変更する)必要があります。遅く(Eclipse P4プラグインを使用)、面倒です。
だから、私の質問は、ソースコード自体を変更せずに、コードのいくつかのポイントにコンテキストトレースを追加することは可能ですか?行が実行されるたびに「私はここにいて、それを見た」をログに記録できるもの。
私は最初にEclipseプラグインを検索し、Cデバッガーの提案のみを見つけ、(SOのコメントで、私は思うが、残念ながら参照を失った)解決策を見つけました。他の誰かに役立ちます。上で述べたように、どんな代替案も取るのが良いです。