如果可能,请描述支持的平台/语言/符号格式,如果提供完全支持(历史状态返回)或部分支持(只有代码可以重新运行而不需要救援状态)。
欢迎提供有关所需性能或资源的更多信息,但这是可选的。
答案 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
命令)也可以执行此操作。如果函数损坏了堆栈,则此功能的用途有限。然后,你真的需要重新开始!
计算机已经变得如此之快,从一开始就重新开始比以前痛苦得多。您可以在要返回的点之前设置断点,然后从头开始重新运行该程序。