【发布时间】:2012-01-04 11:04:09
【问题描述】:
我一直在寻找在进行 Java 调试时是否可以回溯的答案。例如,如果我有代码:
int x = 1
int y = 0
//Exception will happen here
int z = x/y
如果我遇到异常,我想回去。 不仅像丢弃帧,而且还恢复对堆所做的实际更改。 目前可以吗?
提前致谢。
【问题讨论】:
我一直在寻找在进行 Java 调试时是否可以回溯的答案。例如,如果我有代码:
int x = 1
int y = 0
//Exception will happen here
int z = x/y
如果我遇到异常,我想回去。 不仅像丢弃帧,而且还恢复对堆所做的实际更改。 目前可以吗?
提前致谢。
【问题讨论】:
有一个叫Chronon Time Travelling Debugger的工具
它声称...
概览
Chronon 时间旅行调试器允许您播放 Chronon 记录并轻松找到缺陷的根本原因。它是具体的 从头开始构建,允许调试长时间运行的程序 运行数天/数月并且高度多线程。
调试器无缝插入 Eclipse,自然地适应自身 到您的工作流程。您还可以使用 Eclipse 集成的 Chronon 调试器可轻松记录您的开发程序 Eclipse 中的机器。
【讨论】:
除非您实现某种撤消堆栈,否则这是不可能的,这取决于您所做的事情,可能会过度设计。如果您使堆对象不可变,并且仅在一切完成后才更改调用者可见的指针而不抛出异常,那么您将获得所需行为的相对较好的近似值,但是很难使线程- 安全而不使用过度同步,并且可能生成大量样板代码,这些代码不会为流程增加很多价值......
【讨论】:
你试过Omniscient debugger吗?
【讨论】: