最近、 C ++でgdbを使用して逆デバッグを使用し始めました。これは、特定の種類の問題(ループ、再帰アルゴリズムなど)に対して非常にうまく機能します。gdbの他に、C / C ++用の他の商用デバッガー(UndoDBなど)があります。
他の言語用の優れたリバーシブルデバッガーがあるのだろうか?私は特にJavaとRubyに興味がありますが、質問はどの言語にも当てはまります。
私が見つけた別の方法は、仮想マシンでアプリケーションを実行して接続することです。私が知っている(しかしテストしたことのない)唯一の実装は、VMwareのリプレイデバッグです。どのタイプのデバッグタスクに適しているのだろうか。最も一般的な問題ではやり過ぎのようですが、一般に再現が難しい通信または同期の問題をデバッグするのに役立つ場合があります。
背景情報:
- 「リバースデバッグ」という用語は、gdbで使用されます。ただし、多くの同義語があります。
- 「リバーシブルデバッグ」
- MicrosoftはそれをIntelliTraceまたは「HistoricalDebugging」と呼んでいます
- Javaでは、このようなデバッガーは「OminiscientDebugger」と呼ばれることもあります。
- (programmers.stackexchangeで)リバースデバッグがめったに使用されないのはなぜですか?