Debugging Parallel Programs with Instant Replay
IEEE Transactions on Computers
A software instruction counter
ASPLOS III Proceedings of the third international conference on Architectural support for programming languages and operating systems
Supporting reverse execution for parallel programs
PADD '88 Proceedings of the 1988 ACM SIGPLAN and SIGOPS workshop on Parallel and distributed debugging
ACM Computing Surveys (CSUR)
Debugging Concurrent Ada Programs by Deterministic Execution
IEEE Transactions on Software Engineering
Optimal tracing and replay for debugging shared-memory parallel programs
PADD '93 Proceedings of the 1993 ACM/ONR workshop on Parallel and distributed debugging
Replay for concurrent non-deterministic shared-memory applications
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Eraser: a dynamic data race detector for multithreaded programs
ACM Transactions on Computer Systems (TOCS)
Deterministic replay of Java multithreaded applications
SPDT '98 Proceedings of the SIGMETRICS symposium on Parallel and distributed tools
RecPlay: a fully integrated practical record/replay system
ACM Transactions on Computer Systems (TOCS)
Bandera: extracting finite-state models from Java source code
Proceedings of the 22nd international conference on Software engineering
jRapture: A Capture/Replay tool for observation-based testing
Proceedings of the 2000 ACM SIGSOFT international symposium on Software testing and analysis
Time, clocks, and the ordering of events in a distributed system
Communications of the ACM
Simplifying and Isolating Failure-Inducing Input
IEEE Transactions on Software Engineering
Java Virtual Machine Specification
Java Virtual Machine Specification
The Java Language Specification
The Java Language Specification
Isolating failure-inducing thread schedules
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
A Perturbation-Free Replay Platform for Cross-Optimized Multithreaded Applications
IPDPS '01 Proceedings of the 15th International Parallel & Distributed Processing Symposium
ASE '00 Proceedings of the 15th IEEE international conference on Automated software engineering
An Esterel compiler for large control-dominated systems
IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems
Advanced unit testing: how to scale up a unit test framework
Proceedings of the 2006 international workshop on Automation of software test
ORDER: object centric deterministic replay for Java
USENIXATC'11 Proceedings of the 2011 USENIX conference on USENIX annual technical conference
Retroactive aspects: programming in the past
Proceedings of the Ninth International Workshop on Dynamic Analysis
Java replay for dependence-based debugging
Proceedings of the Workshop on Parallel and Distributed Systems: Testing, Analysis, and Debugging
Tiddle: a trace description language for generating concurrent benchmarks to test dynamic analyses
WODA '09 Proceedings of the Seventh International Workshop on Dynamic Analysis
Hi-index | 0.00 |
Deterministic replay can help to understand the cause of a failing execution of a multi-threaded program. Stepwise browsing of a counterexample serves the same purpose in the context of static and dynamic checking. In this paper we present a tool for deterministic replay of a multi-threaded execution of a Java program. The replay engine is independent of a specific JVM. We also suggest a language to describe thread schedules. Such schedules can be produced either directly by a tool or virtual machine or can, given some additional information, be extracted from a bytecode trace. Thus, off-the-shelf debuggers can be used for both, cyclic debugging of multi-threaded Java programs, and for browsing of concurrent execution traces produced by many checking tools. Experimental results show that correct replay can be performed with acceptable overhead across a number of virtual machines. Plug-ins have been implemented to generate schedules automatically for Java PathFinder and for JNuke.