What if a debugger could allow you to simply step BACKWARDS? Instead of all that hassle with guessing where to put breakpoints and the fear of typing "continue" one too many times... What if you could simply go backwards to see what went wrong?
This is the essence of the "Omniscient Debugger" -- it remembers everything that happened during the run of a program, and allows the programmer to "step backwards in time" to see what happened at any point of the program. All variable values, all objects, all method calls, all exceptions are recorded and the programmer can now look at anything that happened at any time.
In this talk, I will describe the design of the "ODB" -- an implementation of Omniscient Debugging for Java programs -- and discuss the various costs and tradeoffs. The last half of the talk will be a demonstration of the ODB, showing how the various pieces of data are displayed and how the programmer can "navigate" through time to see what the program was doing, where values were set, when various threads ran, etc.
At the conclusion of the talk, the audience will be invited to use the ODB to find some actual bugs.
If you have a bug (current or former) in a Java program that you'd like to explore, bring it along! Please make sure it's pure Java, in a relatively small program that you have the source code to, and that it manifests itself within 10 seconds of a known action (e.g., start up or a button push).