Speaker: Bob Boothe, University of Southern Maine
Design of a Bidirectional Debugger
September 19, 1997
Current program debuggers allow their operator to step and move forward in a controlled fashion along the execution path of a program. In this talk we will discuss our ongoing research into the design of a bidirectional debugger. The goal of this research is to produce a program debugger with which one can move as easily backwards as current debuggers move forward. We believe this will be a vastly more useful debugger. A programmer will be able to start at the manifestation of a bug and proceed backwards investigating how the program arrived at the incorrect state, rather than the current and often tedious technique of stepping and breakpointing along hoping to stop at a point (usually just before the bug) that contains sufficient clues as to the bug's cause, and whenever one steps too far, restating all the way back from the beginning.
We will discuss the new techniques and algorithms that we are developing for implementing the analogous backwards moving debugger commands for: step, next, finish, and continue. These techniques include code augmentation, re-execution, checkpointing, and I/O replay. We also will discuss previous research into adding backwards functionality to debuggers, some preliminary performance data showing surprisingly fast performance for our techniques, and future research plans.
Author: Bob Boothe, University of Southern Maine