最近,我开始在 C++ 中使用 gdb 进行反向调试,它对于某些类型的问题(例如,循环和递归算法)非常有效。除了 gdb,还有其他用于 C/C++ 的商业调试器(例如UndoDB)。
我想知道其他语言是否有好的可逆调试器?我对 Java 和 Ruby 特别感兴趣,但这个问题对任何语言都是开放的。
我发现的另一种方法是在虚拟机上运行您的应用程序并连接到它。我知道(但从未测试过)的唯一实现是VMware 的 Replay Debugging。我想知道它适合哪些类型的调试任务。对于最常见的问题似乎有点过头了,但它可能对调试通信或同步问题很有用,这些问题通常很难重现。
背景资料:
- gdb 使用术语“反向调试”。但是,有很多同义词:
- “可逆调试”
- 微软称其为 IntelliTrace 或“历史调试”
- 在 Java 中,此类调试器有时被称为“Ominiscient Debugger”
- (关于programmers.stackexchange)为什么很少使用反向调试?