有没有人知道一种调试器或编程语言,可以设置断点,然后修改代码并执行新修改的代码。
如果调试器还具有反向调试的功能,那就更有用了。这样,您可以逐步查看有错误的代码,向后堆栈,修复代码,然后再次逐步查看以查看是否已修复错误。那真是太棒了,有人在做这个吗?
有没有人知道一种调试器或编程语言,可以设置断点,然后修改代码并执行新修改的代码。
如果调试器还具有反向调试的功能,那就更有用了。这样,您可以逐步查看有错误的代码,向后堆栈,修复代码,然后再次逐步查看以查看是否已修复错误。那真是太棒了,有人在做这个吗?
printf
,goto
,一组if
-then
-else
测试,一些for
循环等等... 这真的非常强大和节省时间。Python调试器Pdb允许您在暂停时运行任意代码(如在断点处)。例如,假设您正在调试并已暂停在程序中未声明变量的以下行:
print (x)
因此向前移动(即运行那行代码)将导致:
NameError: name 'x' is not defined
(Pdb) 'x' in locals()
False
(Pdb) x = 1
(Pdb) 'x' in locals()
True
真正的反向执行也是一个棘手的问题。有许多商业项目,但几乎所有这些项目都只记录跟踪数据以便后续浏览,称为全知调试(但它们通常被称为反向、回溯、双向或时间旅行调试器,也存在很多混淆)。在免费和开源项目方面,GNU调试器gdb有两种模式,一种是进程记录和重放,也只记录程序以便后续浏览,另一种是真正的反向调试,允许您在实时程序中进行反向操作。它非常缓慢,因为它每次只撤消单个机器指令。扩展的Python调试器原型epdb也允许在实时程序中进行真正的反向操作,并且速度更快,因为它使用了快照/检查点和重放机制。这里是论文,这里是程序和代码。
http://msdn.microsoft.com/en-us/library/bcew296c%28v=vs.80%29.aspx
这个链接是针对VS 2005的,但同样适用于2008和2010。