by Darren C. Atkinson, Markus Mock, Craig Chambers, Susan J. Eggers
ACM SIGSOFT 10th Symposium on the Foundations of Software Engineering (FSE
http://www.cs.washington.edu/homes/mock/papers/master.ps
Add To MetaCart
Abstract:
Program slicing is a potentially beneficial analysis for aiding program understanding. However, slices of even small programs are often too large to be generally useful. Imprecise pointer analyses have been suggested as one cause of this problem. In this paper, we explore using dynamic points-to information as an alternative to static information to improve precision. Since dynamic points-to data reflects the values of pointers during actual execution, the dynamic points-to sets are generally much smaller, and therefore the sizes of the resulting slices should also be smaller. Our experiments showed that the smaller points-to sets generally led to significantly smaller data-flow sets in the analysis. However, because of many direct data dependences in the programs, the improved precision of pointer data did generally not translate into significantly reduced slices. Nevertheless, for programs with many calls through function pointers, the more precise dynamic pointer information produced a significantly smaller call graph, resulting in considerably better slices. The implications of our results are twofold. First, to improve the quality of slices in general, other techniques than improved pointer analysis will be necessary. Second, for applications with an imprecise call graph, an optimistic approximation of the true graph is likely to yield considerable improvement in slice size.
Citations
|
908
|
Program slicing
– Weiser
- 1984
|
|
519
|
Interprocedural slicing using dependence graphs
– Horwitz, Reps, et al.
- 1990
|
|
446
|
A survey of program slicing techniques
– Tip
- 1995
|
|
415
|
Points-to analysis in almost linear time
– Steensgaard
- 1996
|
|
403
|
Program Analysis and Specialization for the C Programming Language. PhDthesis, University of Copenhagen, DIKU, DIKU report 94/19
– Andersen
- 1994
|
|
339
|
Effective context-sensitive pointer analysis for C programs
– Wilson, Lam
- 1995
|
|
269
|
Validity of the Single Processor Approach to Achieving Large-Scale Computing Capabilities
– Amdahl
- 1967
|
|
214
|
Using program slicing in software maintenance
– Gallagher, Lyle
- 1991
|
|
146
|
Unification-based pointer analysis with directional assignments
– Das
- 2000
|
|
137
|
Fast and Accurate Flow-Insensitive Points-To Analysis
– Shapiro, Horwitz
- 1997
|
|
67
|
The effects of precision on pointer analysis
– Shapiro, Horwitz
- 1997
|
|
61
|
The design of whole-program analysis tools
– Atkinson, Griswold
- 1996
|
|
51
|
Demand interprocedural dataflow anafysis~’ Unpublished Report, Computer Sciences Department, University of Wk.consin, Madkon, WI (). (In preparation
– Horwitz, Reps, et al.
|
|
42
|
Effective whole-program analysis in the presence of pointers
– Atkinson, Griswold
- 1998
|
|
36
|
Probability and Statistics for Engineering and the Sciences. Brooks/Cole
– Devore
- 1995
|
|
33
|
On the importance of points-to analysis and other memory disambiguation methods for C programs
– Ghiya, Lavery, et al.
- 2001
|
|
31
|
Calpa: a tool for automating selective dynamic compilation
– MOCK, CHAMBERS, et al.
- 2000
|
|
26
|
Dynamic Points-To Sets: A Comparison with Static Analyses and
– Mock, Das, et al.
- 2001
|
|
21
|
O#-line variable substitution for scaling points-to analysis
– Rountev, Chandra
- 2000
|
|
20
|
A slicing-based approach for locating type errors
– Dinesh, Tip
- 2001
|
|
16
|
Calpa: A tool for automating dynamic compilation
– Mock, Berryman, et al.
- 1999
|
|
11
|
Implementation techniques for efficient data-flow analysis of large programs
– Atkinson, Griswold
- 2001
|
|
11
|
A comparative study of two whole-program slicers for C
– Bent, Atkinson, et al.
- 2000
|
|
8
|
The value of slicing while debugging
– Francel, Rugaber
|
|
6
|
Codesurfer user guide and reference manual
– GrammaTech
- 2000
|
|
6
|
The flow and analysis libraries of machine SUIF
– Holloway, Young
- 1997
|
|
5
|
Light-weight context recovery for efficient and accurate program analyses
– Liang, Harrold
- 2000
|
|
3
|
The Design and Implementation of Practical and Task-Oriented Whole-Program Analysis Tools
– Atkinson
- 1999
|
|
3
|
Using a program slicing CASE tool for evaluating high integrity software systems
– Beltracchi, Lyle, et al.
- 1996
|