An Execution Backtracking Approach to Program Debugging
نویسندگان
چکیده
An execution backtracking facility in interactive source debuggers allows users to mirror their thought processes while debugging — working backwards from the location where an error is manifested and determining the conditions under which the error occurred. Such a facility also allows a user to change program characteristics and reexecute from arbitrary points within the program under examination — a “what-if” capability. This paper describes an experimental debugger that provides such a backtracking function. We describe why the facility is useful, and why other current techniques are inadequate. We show how execution backtracking can be efficiently implemented by saving only the latest values of variables modified by a statement, and allowing backtracking only over complete program statements. We also describe how this approach relates to our work on dynamic program slicing.
منابع مشابه
Backtracking and Re-Execution in the Automatic Debugging of Parallelized Programs
ht this work we describe a new app-oach using relative debugging to find differences in compmation between a serial program and a parallel version of tl at program. We use a combination of re-execution and backtracking in order to find the first difference in computation that may ultimately lead to an incorrect value that the um r has indicated. In our protoO'pe implementation We use ._,alic an...
متن کاملDebugging with Dynamic Slicing and Backtracking
Programmers spend considerable time debugging code. Symbolic debuggers provide some help but the task remains complex and difficult. Other than breakpoints and tracing, these tools provide little high-level help. Programmers must perform many tasks manually that the tools could perform automatically, such as finding which statements in the program affect the value of an output variable for a gi...
متن کاملAutomatic Relative Debugging of OpenMP Programs
In this work we show how automatic relative debugging can be used to find differences in computation between a correct serial program and an OpenMP parallel version of that program that does not yield correct results. Backtracking and re-execution are used to determine the first OpenMP parallel region that produces a difference in computation that may lead to an incorrect value the user has ind...
متن کاملA Case for Dynamic Reverse-code Generation to Debug Non-deterministic Programs
Backtracking (i.e., reverse execution) helps the user of a debugger to naturally think backwards along the execution path of a program, and thinking backwards makes it easy to locate the origin of a bug. So far backtracking has been implemented mostly by state saving or by checkpointing. These implementations, however, inherently do not scale. Meanwhile, a more recent backtracking method based ...
متن کاملProgram Validation by Symbolic and Reverse Execution
Program validation is one of the most crucial tasks during program development since programs should conform to programmers’ requirements.2 To this end, one is often required to formulate requirements into formal specifications and analyze a given program against these specifications until no error is detected; if an error is detected, its cause must be located and fixed. In this dissertation, ...
متن کامل