Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/996841.996855acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
Article

Cost effective dynamic program slicing

Published: 09 June 2004 Publication History

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.

References

[1]
H. Agrawal and J. Horgan, "Dynamic Program Slicing," ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 246--256, 1990.
[2]
H. Agrawal, R. DeMillo, and E. Spafford, "Debugging with Dynamic Slicing and Backtracking," Software Practice and Experience, 23(6):589--616, 1993.
[3]
T. Ball and J.R. Larus, "Efficient Path Profiling," IEEE/ACM International Symposium on Microarchitecture, 1996.
[4]
A. Beszedes, T. Gergely, Z.M. Szabo, J. Csirik, and T. Gyimothy, "Dynamic Slicing Method for Maintenance of Large C Programs," 5th European Conference on Software Maintenance and Reengineering, pages 105--113, March 2001.
[5]
T.M. Chilimbi, "Efficient Representations and Abstractions for Quantifying and Exploiting Data Reference Locality," ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 191--202, 2001.
[6]
D.M.D. Dhamdhere, K. Gururaja, and P.G. Ganu, "A Compact Execution History for Dynamic Slicing," Information Processing Letters, 85:(145--152), 2003.
[7]
E. Duesterwald, R. Gupta, and M.L. Soffa, "Distributed Slicing and Partial Re-execution for Distributed Programs," 5th LCPC Workshop, LNCS 757 Springer, pages 497--511, August 1992.
[8]
E. Duesterwald, R. Gupta, and M.L. Soffa, "Rigorous Data Flow Testing through Output Influences," 2nd Irvine Software Symposium, pages 131--145, UC Irvine, CA, March 1992.
[9]
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, 9(3):319--349, 1987.
[10]
R. Gupta and M.L. Soffa, "Hybrid Slicing: An Approach for Refining Static Slices using Dynamic Information," ACM SIGSOFT Symp. on the Foundations of Software Engineering, pages 29--40, 1995.
[11]
N. Gupta and P. Rao, "Program Execution Based Module Cohesion Measurement," 16th IEEE International Conf. on Automated Software Engineering, pages 144--153, San Diego, CA November 2001.
[12]
T. Hoffner, "Evaluation and Comparison of Program Slicing Tools." Tech. Report, Dept. of Computer and Info. Science, Linkoping University, Sweden, 1995.
[13]
S. Jha, Private communication, University of Wisconsin at Madison, Department of Computer Science, 2003.
[14]
B. Korel and J. Laski, "Dynamic Program Slicing," Information Processing Letters, 29(3):155--163, 1988.
[15]
B. Korel and J. Rilling, "Application of Dynamic Slicing in Program Debugging," Automated and Algorithmic Debugging, 1997.
[16]
M. Kamkar, "Interprocedural Dynamic Slicing with Applications to Debugging and Testing," PhD Thesis, Linkoping University, 1993.
[17]
B. Korel and S. Yalamanchili. "Forward Computation of Dynamic Program Slices," International Symposium on Software Testing and Analysis, August 1994.
[18]
J.R. Larus, "Whole Program Paths," ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 259--269, Atlanta, GA, May 1999.
[19]
M. Mock, D.C. Atkinson, C. Chambers, and S.J. Eggers, "Improving Program Slicing with Dynamic Points-to Data," ACM SIGSOFT 10th Symp. on the Foundations of Software Engineering, 2002.
[20]
C.G. Nevil-Manning and I.H. Witten, "Linear-time, Incremental Hierarchy Inference for Compression," Data Compression Conference, Snowbird, Utah, IEEE Computer Society, pages 3--11, 1997.
[21]
T. Reps and G. Rosay, "Precise Interprocedural Chopping," Third ACM SIGSOFT Symposium on the Foundations of Software Engineering, Washington, DC, pages 41--52, October 1995.
[22]
Y. Sazeides, "Instruction-Isomorphism in Program Execution," Value Prediction Workshop (held with ISCA), June 2003.
[23]
F. Tip, "A Survey of Program Slicing Techniques," Journal of Programming Languages, 3(3):121--189, Sept. 1995.
[24]
G. Venkatesh, "Experimental Results from Dynamic Slicing of C Programs," ACM Transactions on Programming Languages and Systems, 17(2):197--216, 1995.
[25]
M. Weiser, "Program Slicing," IEEE Transactions on Software Engineering, SE-10(4):352--357, 1982.
[26]
X. Zhang, R. Gupta, and Y. Zhang, "Precise Dynamic Slicing Algorithms," IEEE/ACM International Conference on Software Engineering, pages 319--329, Portland, Oregon, May 2003.
[27]
X. Zhang, R. Gupta, and Y. Zhang, "Efficient Forward Computation of Dynamic Slices Using Reduced Ordered Binary Decision Diagrams," IEEE/ACM International Conference on Software Engineering, Edinburgh, UK, May 2004.
[28]
C.B. Zilles and G. Sohi, "Understanding the Backward Slices of Performance Degrading Instructions," ACM/IEEE 27th International Symposium on Computer Architecture, 2000.

Cited By

View all
  • (2023)FreePart: Hardening Data Processing Software via Framework-based Partitioning and IsolationProceedings of the 28th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 410.1145/3623278.3624760(169-188)Online publication date: 25-Mar-2023
  • (2021)Mandoline: Dynamic Slicing of Android Applications with Trace-Based Alias Analysis2021 14th IEEE Conference on Software Testing, Verification and Validation (ICST)10.1109/ICST49551.2021.00022(105-115)Online publication date: Apr-2021
  • (2020)SEADSACM Transactions on Software Engineering and Methodology10.1145/337934530:1(1-45)Online publication date: 31-Dec-2020
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
PLDI '04: Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
June 2004
310 pages
ISBN:1581138075
DOI:10.1145/996841
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 39, Issue 6
    PLDI '04
    May 2004
    299 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/996893
    Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 09 June 2004

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. debugging
  2. dynamic dependence graph
  3. testing

Qualifiers

  • Article

Conference

PLDI04
Sponsor:

Acceptance Rates

Overall Acceptance Rate 406 of 2,067 submissions, 20%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)25
  • Downloads (Last 6 weeks)2
Reflects downloads up to 04 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2023)FreePart: Hardening Data Processing Software via Framework-based Partitioning and IsolationProceedings of the 28th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 410.1145/3623278.3624760(169-188)Online publication date: 25-Mar-2023
  • (2021)Mandoline: Dynamic Slicing of Android Applications with Trace-Based Alias Analysis2021 14th IEEE Conference on Software Testing, Verification and Validation (ICST)10.1109/ICST49551.2021.00022(105-115)Online publication date: Apr-2021
  • (2020)SEADSACM Transactions on Software Engineering and Methodology10.1145/337934530:1(1-45)Online publication date: 31-Dec-2020
  • (2019)Automatically Patching Vulnerabilities of Binary Programs via Code Transfer From Correct VersionsIEEE Access10.1109/ACCESS.2019.29019517(28170-28184)Online publication date: 2019
  • (2019)A comparison of tree- and line-oriented observational slicingEmpirical Software Engineering10.1007/s10664-018-9675-924:5(3077-3113)Online publication date: 1-Oct-2019
  • (2017)Dynamic Dependence SummariesACM Transactions on Software Engineering and Methodology10.1145/296844425:4(1-41)Online publication date: 9-Jan-2017
  • (2017)Tree-Oriented vs. Line-Oriented Observation-Based Slicing2017 IEEE 17th International Working Conference on Source Code Analysis and Manipulation (SCAM)10.1109/SCAM.2017.11(21-30)Online publication date: Sep-2017
  • (2017)Lightweight control-flow instrumentation and postmortem analysis in support of debuggingAutomated Software Engineering10.1007/s10515-016-0190-124:4(865-904)Online publication date: 1-Dec-2017
  • (2016)DiaProACM Transactions on Software Engineering and Methodology10.1145/289475125:2(1-50)Online publication date: 6-Apr-2016
  • (2015)ORBS and the limits of static slicing2015 IEEE 15th International Working Conference on Source Code Analysis and Manipulation (SCAM)10.1109/SCAM.2015.7335396(1-10)Online publication date: Sep-2015
  • Show More Cited By

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media