「3.ODB – Omniscient Debugger」

软件介绍

ODB 是一个 Java 调试器,这个调试器可以“倒退时间”回溯程序的执行过程。

软件信息

作者:Bil Lambda
简介:http://omniscientdebugger.github.io/ODBDescription.html
手册:http://omniscientdebugger.github.io/ODBUserManual.html
介绍:http://www.cs.kent.edu/~farrell/mc08/lectures/progs/pthreads/Lewis-Berg/odb/AADEBUG_Mar_03.pdf

参考文献

ODB 的 GitHub 项目主页
ODB 官网主页

ODB 是什么?

记录程序调用记录,“时间倒退”。

ODB 以时间戳为单位记录程序中发生的事情。然后 GUI 允许你向后查看对象、变量、方法调用等等。因此,你可以看到有问题的变量,这个变量来自于哪里,谁设置了该变量,已经为什么如此设置。这也表示没有什么确定不了的问题。你也不需要猜测问题可能发生在哪里,也不需要设置断点,也不需要惊讶于哪个线程运行了他们,也不需要重复的运行程序。

ODB 有 Java 语言实现。

ODB 的实现原理

ODB 是在程序中的每个“兴趣点”(赋值,进行方法调用,抛出 / 捕获异常)中收集“时间戳”,然后允许程序员使用这些时间戳来探索该程序的历史运行。

它在程序的类中插入代码,并在程序运行时记录事件。

在新版本中发生的更改

可以在 Eclipse 的 RUN 菜单中运行 ODB。通过导入 ODB,将 main 类设置为 com.lambda.Debugger.Debugger,然后将参数设置为你想运行的程序。

JDK1.5 可以正常工作。你必须选择正确版本的 ODB:

  • ODB1.5 用于 JDK1.5;
  • ODB1.4 用于 JDK1.4;

运行 DEMO 程序

下载 debugger.jar,然后运行它(java -jar debugger.jar)。选择“Demo”(一个内置的指针(一个 bug)!多线程快速排序)。该程序将运行,然后调试器将弹出,你将能够“探索”程序的历史。按下按钮,双击对象。

你可以通过定义一些 SEHLL 别名并调用 debug 来选择自己的程序而不是演示程序:

% cd ~/Debugger

% jar xf debugger.jar aliases docs

% source aliases

% debug YourProgram

在.jar 文件中有一个完整的手册(docs/ *),以及一些 Unix 别名(Microsoft .bat 文件)以使 ODB 更容易使用。

目前 ODB 的发布地址为:https://github.com/OmniscientDebugger/LewisOmniscientDebugger/releases/tag/0.1.5

参考文献

Omniscient Debugging “Because the Debugger Knows Everything”