The reverse execution of programs is a function where programs are executed backward in time. In other words, it is a function that “undoes” effects of previously executed instructions, lines, and procedures. A reversible debugger is a debugger that provides such a functionality. In this paper, we propose a novel approach for the reverse execution of programs written in the C language. Our approach is based on a method called dynamic translation. In dynamic translation, programs are translated and executed on virtual machines concurrently. Our approach has the following advantages compared with existing approaches: (1) our approach enables reverse execution of arbitrary code as long as there is sufficient memory, (2) our approach is very flexible, and (3) our approach allows fast execution. This is because all code to be executed are translated by a flexible virtual machine, and almost all execution is carried out by native machine code generated by the translation.
ASJC Scopus subject areas