Debugging Backwards in Time
Bil Lewis

TL;DR
This paper introduces a novel debugging approach that records all program states to enable backward navigation through execution history, simplifying bug detection and fixing.
Contribution
It presents the concept of backward debugging, a GUI for global program state visualization, and integration with an event analysis engine, advancing debugging tools.
Findings
Successful implementation on large programs
Encouraging results from user studies
Discussion of performance and optimization strategies
Abstract
By recording every state change in the run of a program, it is possible to present the programmer every bit of information that might be desired. Essentially, it becomes possible to debug the program by going ``backwards in time,'' vastly simplifying the process of debugging. An implementation of this idea, the ``Omniscient Debugger,'' is used to demonstrate its viability and has been used successfully on a number of large programs. Integration with an event analysis engine for searching and control is presented. Several small-scale user studies provide encouraging results. Finally performance issues and implementation are discussed along with possible optimizations. This paper makes three contributions of interest: the concept and technique of ``going backwards in time,'' the GUI which presents a global view of the program state and has a formal notion of ``navigation through time,''…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsAdvanced Software Engineering Methodologies · Usability and User Interface Design
