Execution backtracking using reverse execution of machine code

Abstract

Execution backtracking is the process of restoring the state of a program to an arbitrary point earlier in its execution history. It is used to facilitate program debugging. In this thesis, a novel execution backtracking approach is developed and implemented to assist the task of debugging software. The approach is demonstrated for structured C programs and exploits backtracking the program at machine code level. The approach has a lower run-time overhead than the existing approaches. The execution backtracking approach is integrated with a diagnosis test bed that consists of a symbolic debugger, a C cross-compiler, a virtual machine and a symbolic reasoner. A symbolic debugger is used to debug the target executable which is instrumented with a C cross-compiler. Relative advantages of the approach is that it is language independent, it is able to backtrack in presence of pointer operations, and it supports true execution replay and dynamic slicing. A relative disadvantage of the approach is that it is only able to partially restore a program's data state.Applied Science, Faculty ofElectrical and Computer Engineering, Department ofGraduat

    Similar works