Distributed slicing and partial re-execution for distributed programs

  • E. Duesterwald
  • R. Gupta
  • M. Soffa
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 757)


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.


Dependence Graph Original Program Source Process Control Dependence Program Language Design 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    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.Google Scholar
  2. 2.
    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.Google Scholar
  3. 3.
    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.Google Scholar
  4. 4.
    United State Department of Defense, “Reference manual for the Ada programming language,” (ANSI/MIL-SDT-1815A), Washington, D.C., 1983.Google Scholar
  5. 5.
    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.Google Scholar
  6. 6.
    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.Google Scholar
  7. 7.
    J. Gait, “A debugger for concurrent programs,” Software — Practice and Experience, vol. 15, no. 6, pp. 539–554, 1985.Google Scholar
  8. 8.
    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.Google Scholar
  9. 9.
    B. Korel and J. Laski, “Dynamic program slicing,” Information Processing Letters, vol. 29, no. 3, pp. 155–163, 1988.Google Scholar
  10. 10.
    B. Korel, “Automated Software Test Data Generation,” IEEE Transactions on Software Engineering, vol. 16, no. 8, pp. 870–879, 1990.Google Scholar
  11. 11.
    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.Google Scholar
  12. 12.
    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.Google Scholar
  13. 13.
    L. Lamport, “Time, clocks, and the ordering of events in a distributed system,” Communications of the ACM, vol. 21, no. 7, pp. 558–565.Google Scholar
  14. 14.
    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.Google Scholar
  15. 15.
    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.Google Scholar
  16. 16.
    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.Google Scholar
  17. 17.
    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.Google Scholar
  18. 18.
    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.Google Scholar
  19. 19.
    M. Weiser, “Programmers use slices when debugging,” Communication of the ACM, vol. 25, pp. 446–452, 1982.Google Scholar
  20. 20.
    M. Weiser, “Program slicing,” IEEE Transactions on Software Engineering, vol. 10, no. 4, pp. 352–357, 1984.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1993

Authors and Affiliations

  • E. Duesterwald
    • 1
  • R. Gupta
    • 1
  • M. Soffa
    • 1
  1. 1.University of PittsburghPittsburgh

Personalised recommendations