ODB的截图如下:
当程序调用exit()或按下Debugger Controller窗口中的“Stop Recording”按钮时,主调试器窗口(上图)将弹出。你随后可以浏览时间以找到感兴趣的事件或可疑的参数值。
不同的窗格显示了在运行该程序时不同方面的信息。Method Tracks窗格显示程序运行期间所做的所有方法调用(每个线程)。 “Stack”窗格显示当前方法的堆栈,局部变量位于“Locals”窗格中,下方是“this”对象等。当ODB恢复到不同时间时,所有窗格都会相应更新。因此,在事件532(1273以外)中,数组中第二个元素的值为237。
Navigation
导航的主要模式是:在Method Traces窗格、Code窗格、Stack窗格、Threads窗格之一中选择一行;或按 first/last/previous/next其中一个按钮移动到第一个/最后一个/上一个/下一个/等。上下文切换,方法调用,代码行,变量值更改等等。这些都会将调试器恢复到与选择的时间相适合的状态。
Data Display
所有对象都以打印字符串显示,如“<Person_123 Jimmy>”,其中“Person”是类名称,“123”是Person对象的任意唯一标识,“Jimmy”是可选字段的值。任何地方显示的任何对象都可以通过双击将其复制到“Objects”窗格中。当程序员在不同的时间导航时,实例变量值将被更新。尚未设置的值(例如,对象创建之前的实例变量)将显示为“ — ”。
Performance
尽管可以绝对记录所有内容,但它并不是非常有用。人们可能会跳过记录受信任的类(如JCF类,库类和您自己经过良好测试的类)或者不感兴趣的类。事实上,默认情况下只是在选定的软件包中记录和记录这些类。用户可以使用Debugger Controller窗口开始/停止录制。性能尚未证明是一个普遍问题。 Ant重新编译本身运行速度慢了7倍,并且在100万个事件下生成。
Starting
ODB使用了GPL,并且jar文件中包含了完整的源码和手册。如果要调试你的程序,在jar包中有一个aliase文件(SHELL脚本),在执行source aliase后,执行如下命令即可:
参考文献
One page description of the ODB