A mechanism for efficient debugging of parallel programs
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Information Processing Letters
IGOR: a system for program debugging via reversible execution
PADD '88 Proceedings of the 1988 ACM SIGPLAN and SIGOPS workshop on Parallel and distributed debugging
Interprocedural slicing using dependence graphs
ACM Transactions on Programming Languages and Systems (TOPLAS)
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
Forward computation of dynamic program slices
ISSTA '94 Proceedings of the 1994 ACM SIGSOFT international symposium on Software testing and analysis
Automatic incremental state saving
PADS '96 Proceedings of the tenth workshop on Parallel and distributed simulation
MediaBench: a tool for evaluating and synthesizing multimedia and communicatons systems
MICRO 30 Proceedings of the 30th annual ACM/IEEE international symposium on Microarchitecture
Advanced compiler design and implementation
Advanced compiler design and implementation
Efficient optimistic parallel simulations using reverse computation
ACM Transactions on Modeling and Computer Simulation (TOMACS)
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
Precise dynamic slicing algorithms
Proceedings of the 25th International Conference on Software Engineering
Dynamic Slicing Method for Maintenance of Large C Programs
CSMR '01 Proceedings of the Fifth European Conference on Software Maintenance and Reengineering
The program dependence graph in a software development environment
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
An efficient and generic reversible debugger using the virtual machine based approach
Proceedings of the 1st ACM/USENIX international conference on Virtual execution environments
Dynamic Reverse Code Generation for Backward Execution
Electronic Notes in Theoretical Computer Science (ENTCS)
Dynamic slicing on Java bytecode traces
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proceedings of ACM SIGPLAN on Program Protection and Reverse Engineering Workshop 2014
Hi-index | 0.00 |
One of the most time consuming parts of debugging istrying to locate a bug. In this context, there are two powerfuldebugging aids which shorten debug time considerably:reverse execution and dynamic slicing. Reverse executioneliminates the need for repetitive program restartsevery time a bug location is missed. Dynamic slicing, onthe other hand, isolates code parts that influence an erroneousvariable at a program point. In this paper, we presentan approach which provides assembly level reverse executionalong a dynamic slice. In this way, a programmer notonly can find the instructions relevant to a bug, but also canobtain runtime values of variables in a dynamic slice whiletraversing the slice backwards in execution history.Reverse execution along a dynamic slice skips recoveringunnecessary program state; therefore, it is potentiallyfaster than full-scale reverse execution. The experimentalresults with four different benchmarks show a wide range ofspeedups from 1.3X for a small program with few data inputsto six orders of magnitude (1,928,500X) for 400x400matrix multiply. Furthermore, our technique is very memoryefficient. Our benchmark measurements show between3.4X and 2240X memory overhead reduction as comparedto our implementation of the same features using traditionalapproaches.