The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Experiments on slicing-based debugging aids
Papers presented at the first workshop on empirical studies of programmers on Empirical studies of programmers
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
Dynamic slicing of computer programs
Journal of Systems and Software
Techniques for debugging parallel programs with flowback analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Using Program Slicing in Software Maintenance
IEEE Transactions on Software Engineering
Debugging with dynamic slicing and backtracking
Software—Practice & Experience
On slicing programs with jump statements
PLDI '94 Proceedings of the ACM SIGPLAN 1994 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
Programmers use slices when debugging
Communications of the ACM
On the Edge: Regression testability
IEEE Micro
Interprocedural Dynamic Slicing Applied to Interprocedural Data How Testing
ICSM '93 Proceedings of the Conference on Software Maintenance
Distributed Slicing and Partial Re-execution for Distributed Programs
Proceedings of the 5th International Workshop on Languages and Compilers for Parallel Computing
Slicing Programs with Arbitrary Control-flow
AADEBUG '93 Proceedings of the First International Workshop on Automated and Algorithmic Debugging
Slicing Concurrent Programs - A Graph-Theoretical Approach
AADEBUG '93 Proceedings of the First International Workshop on Automated and Algorithmic Debugging
Identifying Faulty Modifications in Software Maintenance
AADEBUG '93 Proceedings of the First International Workshop on Automated and Algorithmic Debugging
Task dependence nets for concurrent systems with Ada 95 and its applications
Proceedings of the conference on TRI-Ada '97
From diagnosis to diagnosability: axiomatization, measurement and application
Journal of Systems and Software
Improved method to generate path-wise test data
Journal of Computer Science and Technology
An Approach to Automated Program Testing and Debugging
APSEC '99 Proceedings of the Sixth Asia Pacific Software Engineering Conference
A brief survey of program slicing
ACM SIGSOFT Software Engineering Notes
Application of redundant computation in software performance analysis
Proceedings of the 5th international workshop on Software and performance
An efficient interprocedural dynamic slicing method
Journal of Systems and Software
Design by Contract to Improve Software Vigilance
IEEE Transactions on Software Engineering
Application of redundant computation in program debugging
Journal of Systems and Software
Algorithms and tool support for dynamic information flow analysis
Information and Software Technology
3D visualization techniques to support slicing-based program comprehension
Computers and Graphics
Hi-index | 0.00 |
A dynamic program slice is an executable part of the program whose behavior is identical, for the same program input, to that of the original program with respect to a variable(s) of interest at some execution position. The existing algorithms of dynamic slice computation use data and control dependencies to compute dynamic slices. These algorithms are limited to structured programs because, as we will show, they may compute incorrect dynamic slices for unstructured programs due to the limitations of control dependencies that are used to compute dynamic slices. In this paper we present a novel approach of dynamic slice computation for unstructured programs. The approach employs the notion of a removable block in finding dynamic program slices. Dynamic slices are derived by identifying not only these parts of program execution that contribute to the computation of the value of a variable of interest, but also these parts of program execution that do not contribute to the computation of the variable value. Data dependencies are used to identify contributing computations, whereas removable blocks are used to identify noncontributing computations. We have proven that the presented dynamic slicing algorithms compute correctly dynamic slices. In addition, these algorithms may compute more accurate dynamic slices as opposed to the existing algorithms that use control dependencies. The presented algorithms have been implemented in a dynamic slicing tool that supports dynamic slicing for Pascal programs.