skip to main content
10.1145/1542476.1542527acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
research-article

Semantics-aware trace analysis

Published:15 June 2009Publication History

ABSTRACT

As computer systems continue to become more powerful and complex, so do programs. High-level abstractions introduced to deal with complexity in large programs, while simplifying human reasoning, can often obfuscate salient program properties gleaned from automated source-level analysis through subtle (often non-local) interactions. Consequently, understanding the effects of program changes and whether these changes violate intended protocols become difficult to infer. Refactorings, and feature additions, modifications, or removals can introduce hard-to-catch bugs that often go undetected until many revisions later.

To address these issues, this paper presents a novel dynamic program analysis that builds a semantic view of program executions. These views reflect program abstractions and aspects; however, views are not simply projections of execution traces, but are linked to each other to capture semantic interactions among abstractions at different levels of granularity in a scalable manner.

We describe our approach in the context of Java and demonstrate its utility to improve regression analysis. We first formalize a subset of Java and a grammar for traces generated at program execution. We then introduce several types of views used to analyze regression bugs along with a novel, scalable technique for semantic differencing of traces from different versions of the same program. Benchmark results on large open-source Java programs demonstrate that semantic-aware trace differencing can identify precise and useful details about the underlying cause for a regression, even in programs that use reflection, multithreading, or dynamic code generation, features that typically confound other analysis techniques.

References

  1. H. Agrawal and J.R. Horgan. Dynamic Program Slicing. In PLDI-90, pages 246--256, 1990. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. T. Apiwattanapong, A. Orso, and M.J. Harrold. JDiff: A Differencing Technique and Tool for Object-Oriented Programs. ASE-07, 14(1):3--36, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. L. Bergroth, H. Hakonen, and T. Raita. A Survey of Longest Common Subsequence Algorithms. In SPIRE-00, page 39, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. C. Csallner and Y. Smaragdakis. DSD-Crasher: A Hybrid Analysis Tool for Bug Finding. In ISSTA-06, pages 245--254, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Valentin Dallmeier and Thomas Zimmermann. Extraction of Bug Localization Benchmarks from History. In ASE, pages 433--436, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. M. Ernst, J. Cockrell, W. Griswold, and D. Notkin. Dynamically Discovering Likely Program Invariants to Support Program Evolution. TSE, 27(2):1--25, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Matthew Flatt, Shriram Krishnamurthi, and Matthias Felleisen. Classes and Mixins. In Proceedings of the 25th ACM SIGPLAN SIGACT symposium on Principles of Programming Languages, pages 171--183. ACM Press, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Liang Guo, Abhik Roychoudhury, and Tao Wang. Accurately Choosing Execution Runs for Software Fault Localization. In CC, pages 80--95, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. D. S. Hirschberg. A Linear Space Algorithm for Computing Maximal Common Subsequences. CACM, 18(6):341--343, 1975. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Kevin Hoffman, Patrick Eugster, and Suresh Jagannathan. RPrism: Efficient Regression Analysis Using View-Based Trace Differencing. Technical Report dynt-200811-1, Purdue University, 2008.Google ScholarGoogle Scholar
  11. Atsushi Igarashi, Benjamin C. Pierce, and Philip Wadler. Featherweight Java: A Minimal Core Calculus for Java and GJ. ACM TOPLAS, 23(3):396--450, May 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. G. Kiczales, J. Lamping, A. Menhdhekar, C. Maeda, C. Lopes, J.-M. Loingtier, and J. Irwin. Aspect-Oriented Programming. In ECOOP-97, pages 220--242, 1997.Google ScholarGoogle ScholarCross RefCross Ref
  13. Zhenmin Li, Lin Tan, Xuanhui Wang, Shan Lu, Yuanyuan Zhou, and Chengxiang Zhai. Have Things Changed Now?: An Empirical Study of Bug Characteristics in Modern Open Source Software. In ASID, pages 25--33, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Ben Liblit, Alex Aiken, Alice X. Zheng, and Michael I. Jordan. Bug Isolation via Remote Program Sampling. In PLDI--03, pages 141--154, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. G. Pothier, E. Tanter, and J. Piquer. Scalable Omniscient Debugging. In OOPSLA-07, pages 535--552, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. X. Ren, F. Shah, F. Tip, B. Ryder, and O. Chesley. Chianti: A Tool for Change Impact Analysis of Java Programs. In OOPSLA-04, pages 432--448, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. M. Stoerzer, B. Ryder, X. Ren, and F. Tip. Finding Failure--Inducing Changes in Java Programs Using Change Classification. In ESECFSE--14, pages 57--68, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. F. Tip. A Survey of Program Slicing Techniques. Journal of programming languages, 3:121--189, 1995.Google ScholarGoogle Scholar
  19. G. A. Venkatesh. Experimental results from dynamic slicing of C programs. ACM Transactions on Programming Languages and Systems, 17(2):197--216, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Bin Xin, William N. Sumner, and Xiangyu Zhang. Efficient Program Execution Indexing. In PLDI-08, pages 238--248, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Andreas Zeller. Isolating Cause-Effect Chains from Computer Programs. In FSE-10, pages 1--10, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Andreas Zeller and Ralf Hildebrandt. Simplifying and Isolating Failure-Inducing Input. TSE, 28(2):183--200, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. X. Zhang and R. Gupta. Cost Effective Dynamic Program Slicing. In PLDI-04, pages 94--106, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. X. Zhang and R. Gupta. Matching Execution Histories of Program Versions. In ESEC/FSE--13, pages 197--206, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Semantics-aware trace analysis

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in
      • Published in

        cover image ACM Conferences
        PLDI '09: Proceedings of the 30th ACM SIGPLAN Conference on Programming Language Design and Implementation
        June 2009
        492 pages
        ISBN:9781605583921
        DOI:10.1145/1542476
        • cover image ACM SIGPLAN Notices
          ACM SIGPLAN Notices  Volume 44, Issue 6
          PLDI '09
          June 2009
          478 pages
          ISSN:0362-1340
          EISSN:1558-1160
          DOI:10.1145/1543135
          Issue’s Table of Contents

        Copyright © 2009 ACM

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 15 June 2009

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • research-article

        Acceptance Rates

        Overall Acceptance Rate406of2,067submissions,20%

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!