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