MetaCartSign in to MyCiteSeer

Include Citations | Advanced Search | Help

Include Citations | Advanced Search | Help

  ABSTRACT Cost Effective Dynamic Program Slicing ∗

Download:
Download as a PDF
unknown authors
http://www.cs.arizona.edu/people/gupta/research/Publications/Comp/pldi04.pdf
Add To MetaCart

Abstract:

Although dynamic program slicing was first introduced to aid in user level debugging, applications aimed at improving software quality, reliability, security, and performance have since been identified as candidates for using dynamic slicing. However, the dynamic dependence graph constructed to compute dynamic slices can easily cause slicing algorithms to run out of memory for realistic program runs. In this paper we present the design and evaluation of a cost effective dynamic program slicing algorithm. This algorithm is based upon a dynamic dependence graph representation that is highly compact and rapidly traversable. Thus, the graph can be held in memory and dynamic slices can be quickly computed. A compact representation is derived by recognizing that all dynamic dependences (data and control) need not be individually represented. We identify sets of dynamic dependence edges between a pair of statements that can share a single representative edge. We further show that the dependence graph can be transformed in a manner that increases sharing and sharing can be performed even in the presence of aliasing. Experiments show that transformed dynamic dependence graphs explicitly represent only 6 % of the dependence edges present in the full dynamic dependence graph. When the full graph sizes range from 0.84 to 1.95 Gigabytes in size, our compacted graphs range from 20 to 210 Megabytes in size. Average slicing times for our algorithm range from 1.74 to 36.25 seconds across several benchmarks from SPECInt2000/95.

Citations

908 Program slicing – Weiser - 1984
672 The program dependence graph and its use in optimization – Ferrante, Ottenstein, et al. - 1987
445 A survey of program slicing techniques – Tip - 1995
214 Dynamic program slicing – Agrawal, Horgan - 1990
59 Efficient representations and abstractions for quantifying and exploiting data reference locality – Chilimbi - 1995
57 Interprocedural dynamic slicing with applications to debugging and testing – Kamkar - 1993
54 Understanding the Backwards Slices of Performance Degrading Instructions – Zilles, Sohi - 2000
33 Precise Dynamic Slicing Algorithms – Zhang, Gupta, et al. - 2003
32 Improving program slicing with dynamic points-to data – Mock, Atkinson, et al. - 2002
31 Rigorous data flow testing through output influences – Duesterwald, Gupta, et al. - 1992
28 Experimental Results from Dynamic Slicing of C Programs – Venkatesh - 1995
20 Lineartime, incremental hierarchy inference for compression – Nevill-Manning, Witten - 1997
17 Hybrid Slicing: An Approach for Refining Static Slices Using Dynamic In formation – Gupta, Soffa - 1995
16 Effective Forward Computation of Dynamic Slices Using Reduced Ordered Binary Decision Diagrams – Zhang, Gupta, et al. - 2004
10 Debugging with dynamic slicing and backtracking. Software Practice and Ezperience – Agrawal, DeMillo, et al. - 1993
9 Evaluation and Comparison of Program Slicing Tools – Hoffner - 1995
8 Program Execution Based Module Cohesion Measurement – Gupta, Rao - 2001
8 Application of Dynamic Slicing – Korel, Rilling - 1997
7 Instruction-isomorphism in program execution – Sazeides - 2003
5 Dynamic Slicing Method for Maintenance of Large C – Beszedes, Gergely, et al. - 2001
3 A compact execution history for dynamic slicing – Dhamdhere, Gururaja, et al. - 2003
2 Distributed Slicing and Partial Re-execution for – Duesterwald, Gupta, et al. - 1992
2 Private communication – Jha - 2003