An efficient and generic reversible debugger using the virtual machine based approach

Toshihiko Koju, Shingo Takada, Norihisa Doi
2005 Proceedings of the 1st ACM/USENIX international conference on Virtual execution environments - VEE '05  
The reverse execution of programs is a function where programs are executed backward in time. A reversible debugger is a debugger that provides such a functionality. In this paper, we propose a novel reversible debugger that enables reverse execution of programs written in the C language. Our approach takes the virtual machine based approach. In this approach, the target program is executed on a special virtual machine. Our contribution in this paper is two-fold. First, we propose an approach
more » ... at can address problems of (1) compatibility and (2) efficiency that exist in previous works. By compatibility, we mean that previous debuggers are not generic, i.e., they support only a special language or special intermediate code. Second, our approach provides two execution modes: the native mode, where the debuggee is directly executed on a real CPU, and the virtual machine mode, where the debuggee is executed on a virtual machine. Currently, our debugger provides four types of trade-off settings (designated by unit and optimization) to consider trade-offs between granularity, accuracy, overhead and memory requirement. The user can choose the appropriate setting flexibly during debugging without finishing and restarting the debuggee.
doi:10.1145/1064979.1064992 dblp:conf/vee/KojuTD05 fatcat:be6emzguanhppoti7ka2xclzju