哪些调试器支持后退/时间机器/回溯功能?

时间:2009-12-10 02:48:17

标签: debugging development-environment

如果可能,请描述支持的平台/语言/符号格式,如果提供完全支持(历史状态返回)或部分支持(只有代码可以重新运行而不需要救援状态)。

欢迎提供有关所需性能或资源的更多信息,但这是可选的。

7 个答案:

答案 0 :(得分:6)

Visual Studio 2010中新的IntelliTrace历史调试器功能似乎符合您的要求。见Debugging With IntelliTrace

  

使用IntelliTrace进行调试,可用   在Microsoft Visual Studio 2010中   终极,提供增强的画面   与您的应用程序相比   传统的调试器。传统   调试器向您显示您的状态   目前申请时间   有关事件的有限信息   发生在过去。你必须要么   推断发生在事件中的事件   过去,根据你的状态   在当前时间申请,或   重新启动应用程序以重新创建   过去的事。有了IntelliTrace,你   实际上可以看到发生的事件   在过去和其中的背景   他们发生了。这减少了数量   调试所需的重启次数   你的申请和可能性   错误将无法重现   当你重新运行应用程序时。

答案 1 :(得分:6)

答案 2 :(得分:6)

答案 3 :(得分:1)

Chronon for java支持完全退回并在任何时间点查看整个状态信息。

答案 4 :(得分:1)

PythonTutor(http://pythontutor.com/)允许您使用多种编程语言对小代码示例执行此操作。

答案 5 :(得分:0)

博士。 Scheme,也称为PLT Scheme,允许您在Scheme程序中后退和前进。尽管我没有太多使用它,但据我所知,完全支持维持国家。在Windows,Mac和Linux上运行。

答案 6 :(得分:-1)

我从未使用具有后退功能的调试器。我刚刚进行了谷歌搜索,并没有找到太多......

我确实发现了这个: http://video.google.com/videoplay?docid=3897010229726822034

搜索“Bill Lewis调试器”让我: http://undo-software.com/undodb_about.html

向后退的能力意味着保留了很多状态:如果你在一行代码中改变一个变量,然后你想要向后退一步,那么可能该变量应该恢复到之前的值。如果更改寄存器,则应恢复为先前的值,并包括标志寄存器。如果你分配了内存,可能应该取消分配。等等。总的来说这是一项很大的工作。看起来这个调试器正在使用copy-on-write技术来实际完成所有这些。我想如果像VirtualBox这样的虚拟机是可能的,那么这就是。

这仍然不是主流功能。我常常看到的一个功能是<设置下一行“。假设您调用一个函数,它会返回一个令您惊讶的值;将“下一行”设置为函数前的行,然后单步执行该函数。 Microsoft Visual Studio调试器可以执行此操作,因此gdb(jump命令)也可以执行此操作。如果函数损坏了堆栈,则此功能的用途有限。然后,你真的需要重新开始!

计算机已经变得如此之快,从一开始就重新开始比以前痛苦得多。您可以在要返回的点之前设置断点,然后从头开始重新运行该程序。