Reversible Debugging Using Program Instrumentation

Reversible execution has not been fully exploited in symbolic debuggers. Debuggers that can undo instructions usually incur a significant performance penalty during a debugging session. We describe an efficient reversible debugging mechanism based on program instrumentation. The approach enables repetitive debugging sessions with selectable reversible routines and recording modes. Experimental results indicate that the execution penalty can be significantly reduced with moderate code growth.

[1]  Marvin V. Zelkowitz Reversible execution , 1973, CACM.

[2]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[3]  Max Copperman Debugging optimized code without being misled , 1994, TOPL.

[4]  Thomas J. LeBlanc,et al.  Debugging Parallel Programs with Instant Replay , 1987, IEEE Transactions on Computers.

[5]  John L. Hennessy,et al.  Symbolic Debugging of Optimized Code , 1982, TOPL.

[6]  David R. Hanson,et al.  DUEL - A Very High-Level Debugging Language , 1993, USENIX Winter.

[7]  Thomas G. Moher,et al.  PROVIDE: A Process Visualization and Debugging Environment , 1988, IEEE Trans. Software Eng..

[8]  Edwin H. Satterthwaite Debugging tools for high level languages , 1972, Softw. Pract. Exp..

[9]  Phil Winterbottom ACID: A Debugger Built From A Language , 1994, USENIX Winter.

[10]  Scott A. Mahlke,et al.  IMPACT: an architectural framework for multiple-instruction-issue processors , 1991, ISCA '91.

[11]  Charles E. McDowell,et al.  A further note on Hennessy's “Symbolic debugging of optimized code” , 1993, TOPL.

[12]  Jacques Cohen,et al.  A language for inquiring about the run‐time behaviour of programs , 1977, Softw. Pract. Exp..

[13]  Stuart I. Feldman,et al.  IGOR: a system for program debugging via reversible execution , 1988, PADD '88.

[14]  Eugene H. Spafford,et al.  An execution-backtracking approach to debugging , 1991, IEEE Software.

[15]  Andrew W. Appel,et al.  A Debugger for Standard ML , 1995, Journal of Functional Programming.

[16]  Mark Scott Johnson Some requirements for architectural support of software debugging , 1982, ASPLOS I.

[17]  George B. Leeman A formal approach to undo operations in programming languages , 1986, TOPL.

[18]  Robert Balzer,et al.  EXDAMS: extendable debugging and monitoring system , 1969, AFIPS '69 (Spring).

[19]  Peter Fritzson,et al.  Using assertions in declarative and operational models for automated debugging , 1994, J. Syst. Softw..

[20]  Jeffrey Scott Vitter US&R: A new framework for redoing (Extended Abstract) , 1984 .

[21]  Koen De Bosschere,et al.  RecPlay: a fully integrated practical record/replay system , 1999, TOCS.

[22]  Mireille Ducassé,et al.  Coca: an automated debugger for C , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[23]  Richard H. Crawford,et al.  Sequential debugging at a high level of abstraction , 1991, IEEE Software.

[24]  James R. Larus,et al.  Rewriting executable files to measure program behavior , 1994, Softw. Pract. Exp..

[25]  Jeffrey Scott Vitter,et al.  US&R: A new framework for redoing (Extended Abstract) , 1984, SDE 1.

[26]  Aladdin: Assembly Language Assertion Driven Debugging Interpreter , 1979, IEEE Transactions on Software Engineering.

[27]  R. K. Shyamasundar,et al.  Introduction to algorithms , 1996 .

[28]  David W. Wall,et al.  A note on Hennessy's “symbolic debugging of optimized code” , 1985, TOPL.

[29]  James R. Larus,et al.  Optimally profiling and tracing programs , 1994, TOPL.

[30]  Susan J. Eggers,et al.  Techniques for efficient inline tracing on a shared-memory multiprocessor , 1990, SIGMETRICS '90.

[31]  W. Kent Fuchs,et al.  TRAPEDS: producing traces for multicomputers via execution driven simulation , 1989, SIGMETRICS '89.

[32]  Fred B. Schneider,et al.  User Recovery and Reversal in Interactive Systems , 1984, TOPL.

[33]  Henry Lieberman,et al.  Bridging the gulf between code and behavior in programming , 1995, CHI '95.