Omniscient debugging with TOD

TOD is an omniscient debugger, or back-in-time debugger, for Java. Omniscient debuggers drastically reduce the time needed to debug software by giving the programmer complete freedom with respect to time: they permit to step forward and backward, and to immediately answer questions like “when was this variable assigned that value?”. This is made possible by the recording of the activity of the debugged program, so that its history, or execution trace, can be freely navigated.

Omniscient debuggers have been around for several years, however they have not made it into the mainstream. Indeed they suffer from inherent scalability problems: execution traces are usually huge, and capturing, storing and presenting them to the programmer is challenging. TOD is the product of ongoing research on practical omniscient debugging at the Pleiad group of the University of Chile. Although currently in a beta stage, it already has several interesting features:

Scalable distributed event database

TOD stores execution traces in an event database. The event database of TOD has a very high throughput and is distributed: it can run on a cluster and its throughput increases almost linearly with the number of machines.

Customizable trace scoping

Capturing an execution trace incurs a significant runtime overhead on the debugged program. TOD supports scoped trace capture, allowing to exclude parts of the program (for instance trusted libraries, such as the JDK) and to disable and enable trace capture at some points in time. Careful scoping greatly reduces the size of execution traces, thus reducing both the runtime overhead and the storage requirements.

Efficient navigation

As execution traces are very big, the programmer must be provided convenient navigational means so that they can quickly locate interesting events. TOD is seamlessly integrated into the Eclipse IDE and provides an easy-to-use interface that extends familiar debugging metaphors such as stepping actions with their reverse counterparts, and convenient “why?” links next to variables and fields that directly jump through causality links.


We have been granted an open-source license of the YourKit Java Profiler: YourKit is kindly supporting open source projects with its full-featured Java Profiler. YourKit, LLC is the creator of innovative and intelligent tools for profiling Java and .NET applications. Take a look at YourKit’s leading software products: YourKit Java Profiler and YourKit .NET Profiler.

© 2007 Guillaume Pothier | Generated by webgen | Design by Andreas Viklund.