Program inversion: more than fun!
Science of Computer Programming
Debugging with dynamic slicing and backtracking
Software—Practice & Experience
IEEE Transactions on Software Engineering - Special issue on formal methods in software practice
ACM SIGPLAN Notices
Bandera: extracting finite-state models from Java source code
Proceedings of the 22nd international conference on Software engineering
Efficient optimistic parallel simulations using reverse computation
ACM Transactions on Modeling and Computer Simulation (TOMACS)
Efficient algorithms for bidirectional debugging
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Instruction-level reverse execution for debugging
Proceedings of the 2002 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
An Execution-Backtracking Approach to Debugging
IEEE Software
Program Construction, International Summer Schoo
Reversible execution as a diagnostic tool
Reversible execution as a diagnostic tool
Bogor: an extensible and highly-modular software model checking framework
Proceedings of the 9th European software engineering conference held jointly with 11th ACM SIGSOFT international symposium on Foundations of software engineering
A Fast Assembly Level Reverse Execution Method via Dynamic Slicing
Proceedings of the 26th International Conference on Software Engineering
Spin model checker, the: primer and reference manual
Spin model checker, the: primer and reference manual
The program inverter LRinv and its structure
PADL'05 Proceedings of the 7th international conference on Practical Aspects of Declarative Languages
Hi-index | 0.00 |
The need for backward execution in debuggers has been raised a number of times. Backward execution helps a user naturally think backwards and, in turn, easily locate the cause of a bug. Backward execution has been implemented mostly by state-saving or checkpointing, which are inherently not scalable. In this paper, we present a method to generate reverse code, so that backtracking can be performed by executing reverse code. The novelty of our work is that we generate reverse code on-the-fly, while running a debugger, which makes it possible to apply the method even to debugging multi-threaded programs.