A review of reverse debugging
Jakob Engblom · 2012
Reverse debugging is the ability of a debugger to stop after a failure in a program has been observed and go back into the history of the execution to uncover the reason for the failure. Long the dream of programmers, over the past decade, reverse execution has become a practical technique available in a number of free and commercial tools. This article will review the history and techniques of reverse debugging, as researched, implemented, and used from the 1970s until today. We will provide some personal insights into reverse debugging, from our own practical use of one such tool, Wind River Simics. that prompted the debug session. Attaching a debugger often disturbs the timing of a parallel program, easily masking errors (so called Heisenbugs, where the act of observation changes the system to hide the bug). Cyclic debugging Discover Bug Rerun, bug doesn’t show up Rerun, bug doesn’t show up Rerun, different bug Rerun, initial bug occurs