![](/img/trans.png)
[英]Why is preprocessor usage less common in languages other than C/C++/ObjC?
[英]Reverse debugging for languages other than C/C++
最近,我开始在C ++中对gdb使用反向调试,它对于某些类型的问题(例如循环和递归算法)非常有效。 除了gdb之外,还有其他用于C / C ++的商业调试器(例如UndoDB )。
我想知道是否有其他语言的良好可逆调试器? 我对Java和Ruby特别感兴趣,但是这个问题适用于任何语言。
我发现的另一种方法是在虚拟机上运行您的应用程序并连接到它。 我知道(但从未经过测试)的唯一实现是VMware的Replay Debugging 。 我想知道哪种调试任务合适。 对于大多数常见问题而言似乎显得过分杀伤,但对于调试通常很难重现的通信或同步问题可能很有用。
背景资料:
Jiva声称可以:
JIVE支持Java程序的正向和反向步进。 ...提供后退功能可以节省程序员重新执行程序直到出错的时间和精力。 JIVE还提供了直接跳回到执行历史记录中任何先前点的功能,以便观察该点的对象图。
在为什么很少使用反向调试? (在developers.stackexchange上),Jakob Engblom发布了有关反向调试当前状态的精彩摘要:
很抱歉收到这则迟来的回覆。 是的,JIVE的反向步进对于调试非常有效。 您可以单步执行或跳回到执行历史记录中的任意点。
您还可以对执行历史进行查询,例如“显示对x的所有更改”,“ x何时首次变为负数”,“此代码行是否曾经执行过;如果是,在哪里?”等。所有这些都可以通过基于表单的简单查询完成。
您可以看一下Omniscient Debugging
,作者Bil Lewis将该论文称为ODB。 ODB是脱机日志和重播方法的一种实现,可实现Java中的反向调试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.