© 2002 by British Computer Society
| ||||||||||||||||||||||||||||||||||||||||||||||||||
Reverse Execution of Java Bytecode
1 Laboratory for Foundations of Computer Science, University of Edinburgh, Edinburgh EH9 3JZ, UK Email: Jon.Cook@ed.ac.uk
We demonstrate a model, including operational semantics, for the reverse execution of stack-based code. We discuss our modification of the Kaffe implementation of the Java Virtual Machine, supporting a debugger capable of running Java bytecode backwards. We achieve reverse execution by logging the state lost during each operation or by directly reversing instructions. Our debugger has facilities for stepping, stepping over methods and running to breakpoints, in both directions. Multi-threading is supported. It is also possible to step through the bytecode when the Java source code is not available. The debugger has both a command line user interface and a graphical user interface with facilities for editing code and running the Java compiler.
Received 30 November, 2001. Revised 13 May, 2002.