Skip to main content

Distributed slicing and partial re-execution for distributed programs

  • Conference paper
  • First Online:
Languages and Compilers for Parallel Computing (LCPC 1992)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 757))

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  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. 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. 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. United State Department of Defense, “Reference manual for the Ada programming language,” (ANSI/MIL-SDT-1815A), Washington, D.C., 1983.

    Google Scholar 

  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. 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. J. Gait, “A debugger for concurrent programs,” Software — Practice and Experience, vol. 15, no. 6, pp. 539–554, 1985.

    Google Scholar 

  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. B. Korel and J. Laski, “Dynamic program slicing,” Information Processing Letters, vol. 29, no. 3, pp. 155–163, 1988.

    Google Scholar 

  10. B. Korel, “Automated Software Test Data Generation,” IEEE Transactions on Software Engineering, vol. 16, no. 8, pp. 870–879, 1990.

    Google Scholar 

  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. 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. 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. 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. 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. 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. 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. 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. M. Weiser, “Programmers use slices when debugging,” Communication of the ACM, vol. 25, pp. 446–452, 1982.

    Google Scholar 

  20. M. Weiser, “Program slicing,” IEEE Transactions on Software Engineering, vol. 10, no. 4, pp. 352–357, 1984.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Utpal Banerjee David Gelernter Alex Nicolau David Padua

Rights and permissions

Reprints 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

Publish with us

Policies and ethics