Static slicing in Unix process environment

We present a method for computing static slices of concurrent programs in a Unix process environment. As a part of our methodology, we introduce the notion of a Concurrent Program Dependence Graph (CPDG). A CPDG represents various aspects of concurrent programs in a hierarchical fashion. This hierarchical representation lets us compute static slices of programs at different levels of abstraction. Based on our methodology, we have implemented a static slicing tool supporting an option to view slices of programs at different levels of details. Experience with our implementation shows that this approach helps the user get a better understanding of the behavior of concurrent programs. Copyright © 2000 John Wiley & Sons, Ltd.

[1]  Mariam Kamkar,et al.  Dynamic slicing of distributed programs , 1995, Proceedings of International Conference on Software Maintenance.

[2]  Jong-Deok Choi,et al.  Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects , 1993, POPL '93.

[3]  Thomas Ball,et al.  Slicing Programs with Arbitrary Control-flow , 1993, AADEBUG.

[4]  J. Jiang,et al.  Program slicing for C-the problems in implementation , 1991, Proceedings. Conference on Software Maintenance 1991.

[5]  Jingde Cheng,et al.  Slicing Concurrent Programs - A Graph-Theoretical Approach , 1993, AADEBUG.

[6]  Eugene H. Spafford,et al.  Dynamic slicing in the presence of unconstrained pointers , 1991, TAV4.

[7]  Rajiv Gupta,et al.  Distributed Slicing and Partial Re-execution for Distributed Programs , 1992, LCPC.

[8]  Keith Brian Gallagher,et al.  Using Program Slicing in Software Maintenance , 1991, IEEE Trans. Software Eng..

[9]  Phil Pfeiffer,et al.  Dependence analysis for pointer variables , 1989, PLDI '89.

[10]  Elaine J. Weyuker,et al.  Selecting Software Test Data Using Data Flow Information , 1985, IEEE Transactions on Software Engineering.

[11]  Shmuel Sagiv,et al.  Building a Bridge between Pointer Aliases and Program Dependences , 1998, Nord. J. Comput..

[12]  Hiralal Agrawal On slicing programs with jump statements , 1994, PLDI '94.

[13]  Janusz W. Laski,et al.  Dynamic Program Slicing , 1988, Inf. Process. Lett..

[14]  Mark Weiser,et al.  Program Slicing , 1981, IEEE Transactions on Software Engineering.

[15]  Utpal Banerjee,et al.  Speedup of ordinary programs , 1979 .

[16]  Mark Weiser,et al.  Programmers use slices when debugging , 1982, CACM.

[17]  James R. Larus,et al.  Detecting conflicts between structure accesses , 1988, PLDI '88.

[18]  Susan Horwitz,et al.  Incremental program testing using program dependence graphs , 1993, POPL '93.

[19]  Ken Kennedy,et al.  Practical dependence testing , 1991, PLDI '91.

[20]  Karl J. Ottenstein,et al.  The program dependence graph in a software development environment , 1984 .

[21]  M. Samadzadeh,et al.  An interactive parallel program slicer for the hypercube , 1993, Proceedings of Phoenix Conference on Computers and Communications.

[22]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1990, TOPL.