The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Information Processing Letters
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
Debugging with dynamic slicing and backtracking
Software—Practice & Experience
Forward computation of dynamic program slices
ISSTA '94 Proceedings of the 1994 ACM SIGSOFT international symposium on Software testing and analysis
Experimental results from dynamic slicing of C programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hybrid slicing: an approach for refining static slices using dynamic information
SIGSOFT '95 Proceedings of the 3rd ACM SIGSOFT symposium on Foundations of software engineering
Precise interprocedural chopping
SIGSOFT '95 Proceedings of the 3rd ACM SIGSOFT symposium on Foundations of software engineering
Proceedings of the 29th annual ACM/IEEE international symposium on Microarchitecture
Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
Understanding the backward slices of performance degrading instructions
Proceedings of the 27th annual international symposium on Computer architecture
Efficient representations and abstractions for quantifying and exploiting data reference locality
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Improving program slicing with dynamic points-to data
Proceedings of the 10th ACM SIGSOFT symposium on Foundations of software engineering
A compact execution history for dynamic slicing
Information Processing Letters
Distributed Slicing and Partial Re-execution for Distributed Programs
Proceedings of the 5th International Workshop on Languages and Compilers for Parallel Computing
Precise dynamic slicing algorithms
Proceedings of the 25th International Conference on Software Engineering
Linear-Time, Incremental Hierarchy Inference for Compression
DCC '97 Proceedings of the Conference on Data Compression
Dynamic Slicing Method for Maintenance of Large C Programs
CSMR '01 Proceedings of the Fifth European Conference on Software Maintenance and Reengineering
Program Execution-Based Module Cohesion Measurement
Proceedings of the 16th IEEE international conference on Automated software engineering
Efficient Forward Computation of Dynamic Slices Using Reduced Ordered Binary Decision Diagrams
Proceedings of the 26th International Conference on Software Engineering
Efficient Forward Computation of Dynamic Slices Using Reduced Ordered Binary Decision Diagrams
Proceedings of the 26th International Conference on Software Engineering
Proceedings of the 37th annual IEEE/ACM International Symposium on Microarchitecture
The Potential of Computation Regrouping for Improving Locality
Proceedings of the 2004 ACM/IEEE conference on Supercomputing
A brief survey of program slicing
ACM SIGSOFT Software Engineering Notes
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)
Experimental evaluation of using dynamic slices for fault location
Proceedings of the sixth international symposium on Automated analysis-driven debugging
Whole execution traces and their applications
ACM Transactions on Architecture and Code Optimization (TACO)
Proceedings of the 14th International Conference on Parallel Architectures and Compilation Techniques
ReSlice: Selective Re-Execution of Long-Retired Misspeculated Instructions Using Forward Slicing
Proceedings of the 38th annual IEEE/ACM International Symposium on Microarchitecture
Locating faulty code using failure-inducing chops
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
Low overhead program monitoring and profiling
PASTE '05 Proceedings of the 6th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Dynamic path conditions in dependence graphs
Proceedings of the 2006 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Pruning dynamic slices with confidence
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Locating faults through automated predicate switching
Proceedings of the 28th international conference on Software engineering
Debugging by asking questions about program output
Proceedings of the 28th international conference on Software engineering
Efficient software model checking of data structure properties
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
A study of effectiveness of dynamic slicing in locating real faults
Empirical Software Engineering
Unified control flow and data dependence traces
ACM Transactions on Architecture and Code Optimization (TACO)
Locating faulty code by multiple points slicing
Software—Practice & Experience
Bouncer: securing software by blocking bad input
Proceedings of twenty-first ACM SIGOPS symposium on Operating systems principles
Experiments with test case prioritization using relevant slices
Journal of Systems and Software
COMPUTE '08 Proceedings of the 1st Bangalore Annual Compute Conference
Deriving input syntactic structure from execution
Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of software engineering
Proceedings of the 14th international conference on Architectural support for programming languages and operating systems
Go with the flow: profiling copies to find runtime bloat
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Semantics-aware trace analysis
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Measuring the strength of information flows in programs
ACM Transactions on Software Engineering and Methodology (TOSEM)
Debugging debugging: acm sigsoft impact paper award keynote
Proceedings of the the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
A lightweight approach for program analysis and debugging
Proceedings of the 3rd India software engineering conference
Finding low-utility data structures
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
Program slice distribution functions
Winter Simulation Conference
Fault localization for data-centric programs
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering
Sound and precise analysis of parallel programs through schedule specialization
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
Dynamic trace-based analysis of vectorization potential of applications
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
An empirical study of automatic event reconstruction systems
Digital Investigation: The International Journal of Digital Forensics & Incident Response
A system for debugging via online tracing and dynamic slicing
Software—Practice & Experience
LEAN: simplifying concurrency bug reproduction via replay-supported execution reduction
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Finding reusable data structures
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Verifying systems rules using rule-directed symbolic execution
Proceedings of the eighteenth international conference on Architectural support for programming languages and operating systems
Comparative causality: explaining the differences between executions
Proceedings of the 2013 International Conference on Software Engineering
Cachetor: detecting cacheable data to remove bloat
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
Hi-index | 0.00 |
Although dynamic program slicing was first introduced to aid in user level debugging, applications aimed at improving software quality, reliability, security, and performance have since been identified as candidates for using dynamic slicing. However, the dynamic dependence graph constructed to compute dynamic slices can easily cause slicing algorithms to run out of memory for realistic program runs. In this paper we present the design and evaluation of a cost effective dynamic program slicing algorithm. This algorithm is based upon a dynamic dependence graph representation that is highly compact and rapidly traversable. Thus, the graph can be held in memory and dynamic slices can be quickly computed. A compact representation is derived by recognizing that all dynamic dependences (data and control) need not be individually represented. We identify sets of dynamic dependence edges between a pair of statements that can share a single representative edge. We further show that the dependence graph can be transformed in a manner that increases sharing and sharing can be performed even in the presence of aliasing. Experiments show that transformed dynamic dependence graphs explicitly represent only 6% of the dependence edges present in the full dynamic dependence graph. When the full graph sizes range from 0.84 to 1.95 Gigabytes in size, our compacted graphs range from 20 to 210 Megabytes in size. Average slicing times for our algorithm range from 1.74 to 36.25 seconds across several benchmarks from SPECInt2000/95.