Reversible Debugging

Version 1

    This paper describes a prototype implementation of reversible  debugging, using entirely Free Software - GDB and QEMU. We explain how  source-level debugging actions are built on top of primitive operations,  how the primitive operations are implemented, and how the simulated  environment interacts with the outside world.


    A reversible debugger offers both standard debugger operations (e.g.  step and next) and reverse execution equivalents that rewind the  program’s state. Even on simple programs, this is convenient: for  instance, if you identify a bad memory write, it allows you to step  backward and see the value that was in memory before it was overwritten.  In more complex systems, reversible debugging allows you to examine the  environment at and before an intermittent fault.