Abstract
We present a parallel algorithm to compute dynamic slices for distributed programs. Dynamic slices are used in debugging to re-execute only those statements of the original program that actually influenced an observed erroneous result. We introduce the notion of a Distributed Dependence Graph (DDG) as the graphical representation of the relevant dependencies among statements that arise during execution of a distributed program. Based on the DDG, we developed a parallel and fully distributed slicing algorithm, where each process determines its local section of the global slice. The potential for non-determinism in distributed programs is addressed by constructing a slice such that non-deterministic selections that were made during execution of the original program are reproduced when re-executing the program slice.
Preview
Unable to display preview. Download preview PDF.
References
H. Agrawal and B. Horgan, “Dynamic program slicing,” Proc. of the SIGPLAN '90 Symposium on Programming Language Design and Implementation, SIGPLAN Notices, vol. 25, no. 6, pp. 246–256, 1990.
H. Agrawal, R. A. DeMillo, and E. H. Spafford, “Dynamic slicing in the presence of unconstrained pointers,” Proc. of the Symposium on Testing, Analysis, and Verification, pp. 60–73, Victoria, British Columbia, 1991.
P. Bates, “Debugging heterogneous distributed systems using event-based models of behavior,” Proc. of the Workshop on Parallel and Distributed Debugging, SIGPLAN Notices, vol. 24, no. 1, pp. 11–22, 1989.
United State Department of Defense, “Reference manual for the Ada programming language,” (ANSI/MIL-SDT-1815A), Washington, D.C., 1983.
E. W. Dijkstra, W. H. Feijen, and A. J. van Gasteren, “Derivation of a termination detection algorithm for distributed computations,” Information Processing Letters, North-Holland, no. 16, pp. 217–219, 1983.
J. Ferrante, K. J. Ottenstein, and J. D. Warren, “The program dependence graph and its use in optimization,” ACM Transactions on Programming Languages and Systems, vol. 9, no. 3, pp. 319–349, 1987.
J. Gait, “A debugger for concurrent programs,” Software — Practice and Experience, vol. 15, no. 6, pp. 539–554, 1985.
S. Horwitz, T. Reps, and D. Binkley, “Interprocedural slicing using dependence graphs,” ACM Transactions on Programming Languages and Systems, vol. 12, no. 1, pp. 26–60, 1990.
B. Korel and J. Laski, “Dynamic program slicing,” Information Processing Letters, vol. 29, no. 3, pp. 155–163, 1988.
B. Korel, “Automated Software Test Data Generation,” IEEE Transactions on Software Engineering, vol. 16, no. 8, pp. 870–879, 1990.
B. Korel, H. Wedde, and R. Ferguson, “Dynamic program slicing for distributed programs,” Technical Report CSC-91-006, Computer Science Department, Wayne State University, Detroit, Michigan, 1991.
D.J. Kuck, R.H. Kuhn, B. Leasure, D.A. Padua, and M. Wolfe, “Dependence graphs and compiler optimizations,” Proc. of the 8th annual ACM Symposium on Principles of Programming Languages, pp. 207–218, Williamsburg, Virginia, 1981.
L. Lamport, “Time, clocks, and the ordering of events in a distributed system,” Communications of the ACM, vol. 21, no. 7, pp. 558–565.
T. J. LeBlanc and J. M. Mellor-Crummey, “Debugging parallel programs with instant replay,” IEEE Transactions on Computers, vol. 36, no. 4, pp. 471–482, 1987.
J. Lyle and M. Weiser, “Automatic program bug location by program slicing,” Proc. of the 2nd IEEE Symposium on Computers and Applications, pp. 877–883, Peking, 1987.
B. P. Miller and J.-D. Choi, “A mechanism for efficient debugging of parallel programs,” Proc. of the SIGPLAN '88 Conference on Programming Language Design and Implementation, pp. 135–144, Atlanta, Georgia, 1988.
K. Ottenstein and L. Ottenstein, “The program dependence graph in a software developent environment,” Proc. of the ACM SIGSOFTISIGPLAN Symposium on practical SDEs, SIGPLAN Notices, vol. 19, o. 5, pp. 177–184, 1984.
G. Venkatesh, “The semantic approach to program slicing,” Proc. of the ACM SIG-PLAN '91 Conference on Programming Language Design and Implementation, pp. 107–119, Toronto, Ontario, Canada, 1991.
M. Weiser, “Programmers use slices when debugging,” Communication of the ACM, vol. 25, pp. 446–452, 1982.
M. Weiser, “Program slicing,” IEEE Transactions on Software Engineering, vol. 10, no. 4, pp. 352–357, 1984.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1993 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Duesterwald, E., Gupta, R., Soffa, M. (1993). Distributed slicing and partial re-execution for distributed programs. In: Banerjee, U., Gelernter, D., Nicolau, A., Padua, D. (eds) Languages and Compilers for Parallel Computing. LCPC 1992. Lecture Notes in Computer Science, vol 757. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-57502-2_67
Download citation
DOI: https://doi.org/10.1007/3-540-57502-2_67
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-57502-3
Online ISBN: 978-3-540-48201-7
eBook Packages: Springer Book Archive