Abstract
Program slices are useful in debugging, testing, maintenance, and understanding of programs. The conventional notion of a program slice, the static slice, is the set of all statements that might affect the value of a given variable occurrence. In this paper, we investigate the concept of the dynamic slice consisting of all statements that actually affect the value of a variable occurrence for a given program input. The sensitivity of dynamic slicing to particular program inputs makes it more useful in program debugging and testing than static slicing. Several approaches for computing dynamic slices are examined. The notion of a Dynamic Dependence Graph and its use in computing dynamic slices is discussed. The Dynamic Dependence Graph may be unbounded in length; therefore, we introduce the economical concept of a Reduced Dynamic Dependence Graph, which is proportional in size to the number of dynamic slices arising during the program execution.
- AH89 Hiralal Agrawal and Joseph R. Horgan. Dynamic program slicing. Technical Report SERC-TR-56-P, Software Engineering Research Center, Purdue University, West Lafayette, Indiana, November 1989.Google Scholar
- ASU86 Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley, 1986. Google ScholarDigital Library
- Bal69 R.M. Balzer. Exdamswextendable debugging and monitoring system. In AFIPS Proceedings, Spring Joint Computer Conference, 1969, volume 34, pages 567-580.Google Scholar
- FOW87 Jeanne Ferrante, Karl J. Ottenstein, and Joe D. Warren. The program dependence graph and its uses in optimization. A CM Transactions on Programming Languages and Systems, 9(3):319-349, July 1987. Google ScholarDigital Library
- HPR89 Susan Horwitz, Jan Prins, and Thomas Reps. Integrating noninterfering versions of programs. ACM Transactions on Programming Languages and Systems, :.1(3):345-387, July 1989. Google ScholarDigital Library
- HRB88 Susan Horwitz, Thomas Reps, and David Binkeley. Interprocedural slicing using dependence graphs. In Proceedings of the A CM SIGPLAN'88 Conference on Programming Language Design and implementation, Atlanta, Georgia, June 1988. SIGPLAN Notices, 23(7):35-46, July 1988. Google ScholarDigital Library
- KKL+81 I). J. Kuck, R. It. Kuhn, B. Leasure, D. A. Padua, and M. Wolfe. Dependence graphs and compiler optimizations. In Confernce Record of the Eighth ACM Symposium on Principles o.f Programming Languages, Williamsburg, Virginia, January 1981. pages 207-218. Google ScholarDigital Library
- KL88 tJogdan Korel and Janusz Laski. Dynamic t,rogram slicing. Information Processing Letters, 29:155-163, October 1988. Google ScholarDigital Library
- MC88 tJarton P. Miller and Jong-Deok Choi. A mechanism for efficient debugging of parallel programs. In Proceedings of the ICM SIGPLAN'88 Conference on Programming Language Design and fmplerqentaiion, Atlanta, Georgia, june 1988. fi. IGPLAN Notices, 23(7):135-144, July 1988. Google ScholarDigital Library
- OO84 Karl J. Ottenstein and Linda M. Ottenstein. The program dependence fl:raph in a software development environraent. In Proceedings of the A CM SIG- OFT/SIGPLAN Symposium on Practical Software Development Environments, pittaburgh, Pennsilvania, April 1984. SIGPLAN Notices, 19(5):177-184, May 1984. Google ScholarDigital Library
- Wei82 Mark Weiser. Programmers use slices when debugging. Communications of the ACM, 25(7):446-452, July 1982. Google ScholarDigital Library
- Wei84 Mark Weiser. Program slicing. IEEE Transactions on Software Engineering, SE-10(4):352-357, July 1984.Google ScholarDigital Library
Index Terms
- Dynamic program slicing
Recommendations
A brief survey of program slicing
Program slicing is a technique to extract program parts with respect to some special computation. Since Weiser first proposed the notion of slicing in 1979, hundreds of papers have been presented in this area. Tens of variants of slicing have been ...
Dynamic program slicing
PLDI '90: Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementationProgram slices are useful in debugging, testing, maintenance, and understanding of programs. The conventional notion of a program slice, the static slice, is the set of all statements that might affect the value of a given variable occurrence. In this ...
Theoretical foundations of dynamic program slicing
This paper presents a theory of dynamic slicing, which reveals that the relationship between static and dynamic slicing is more subtle than previously thought. The definitions of dynamic slicing are formulated in terms of the projection theory of ...
Comments