The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Information Processing Letters
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
Abstract execution: a technique for efficiently tracing programs
Software—Practice & Experience
Towards automatic debugging of computer programs
Towards automatic debugging of computer programs
Techniques for compressing program address traces
MICRO 27 Proceedings of the 27th annual international symposium on Microarchitecture
Slicing object-oriented software
Proceedings of the 18th international conference on Software engineering
Points-to analysis in almost linear time
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
RecPlay: a fully integrated practical record/replay system
ACM Transactions on Computer Systems (TOCS)
An efficient relevant slicing method for debugging
ESEC/FSE-7 Proceedings of the 7th European software engineering conference held jointly with the 7th ACM SIGSOFT international symposium on Foundations of software engineering
Understanding the backward slices of performance degrading instructions
Proceedings of the 27th annual international symposium on Computer architecture
Analysis and Testing of Programs with Exception Handling Constructs
IEEE Transactions on Software Engineering
Time, clocks, and the ordering of events in a distributed system
Communications of the ACM
Timestamped whole program path representation and its applications
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
ICSE '01 Proceedings of the 23rd International Conference on Software Engineering
Java Virtual Machine Specification
Java Virtual Machine Specification
A compact execution history for dynamic slicing
Information Processing Letters
Incremental Regression Testing
ICSM '93 Proceedings of the Conference on Software Maintenance
Dependence Analysis of Java Bytecode
COMPSAC '00 24th International Computer Software and Applications Conference
Compactly representing parallel program executions
Proceedings of the ninth ACM SIGPLAN symposium on Principles and practice of parallel programming
Soot - a Java bytecode optimization framework
CASCON '99 Proceedings of the 1999 conference of the Centre for Advanced Studies on Collaborative research
Linear-Time, Incremental Hierarchy Inference for Compression
DCC '97 Proceedings of the Conference on Data Compression
Dynamic Slicing Object-Oriented Programs for Debugging
SCAM '02 Proceedings of the Second IEEE International Workshop on Source Code Analysis and Manipulation
A Slicing Method for Object-Oriented Programs Using Lightweight Dynamic Information
APSEC '01 Proceedings of the Eighth Asia-Pacific on Software Engineering Conference
A Fast Assembly Level Reverse Execution Method via Dynamic Slicing
Proceedings of the 26th International Conference on Software Engineering
Proceedings of the 37th annual IEEE/ACM International Symposium on Microarchitecture
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Cost and precision tradeoffs of dynamic data slicing algorithms
ACM Transactions on Programming Languages and Systems (TOPLAS)
Removing useless variables in cost analysis of Java bytecode
Proceedings of the 2008 ACM symposium on Applied computing
Finding low-utility data structures
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
Path exploration based on symbolic output
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering
Analysis of bug fixing processes using program slicing metrics
PROFES'10 Proceedings of the 11th international conference on Product-Focused Software Process Improvement
Improved methods and measures for computing dynamic program slices in stochastic simulations
Proceedings of the Winter Simulation Conference
Path exploration based on symbolic output
ACM Transactions on Software Engineering and Methodology (TOSEM) - Testing, debugging, and error handling, formal methods, lifecycle concerns, evolution and maintenance
Hi-index | 0.00 |
Dynamic slicing is a well-known technique for program analysis, debugging and understanding. Given a program P and input I, it finds all program statements which directly/indirectly affect the values of some variables' occurrences when P is executed with I. In this article, we develop a dynamic slicing method for Java programs. Our technique proceeds by backwards traversal of the bytecode trace produced by an input I in a given program P. Since such traces can be huge, we use results from data compression to compactly represent bytecode traces. The major space savings in our method come from the optimized representation of (a) data addresses used as operands by memory reference bytecodes, and (b) instruction addresses used as operands by control transfer bytecodes. We show how dynamic slicing algorithms can directly traverse our compact bytecode traces without resorting to costly decompression. We also extend our dynamic slicing algorithm to perform “relevant slicing”. The resultant slices can be used to explain omission errors that is, why some events did not happen during program execution. Detailed experimental results on space/time overheads of tracing and slicing are reported in the article. The slices computed at the bytecode level are translated back by our tool to the source code level with the help of information available in Java class files. Our JSlice dynamic slicing tool has been integrated with the Eclipse platform and is available for usage in research and development.