Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/2384616.2384684acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Reusing debugging knowledge via trace-based bug search

Published: 19 October 2012 Publication History

Abstract

Some bugs, among the millions that exist, are similar to each other. One bug-fixing tactic is to search for similar bugs that have been reported and resolved in the past. A fix for a similar bug can help a developer understand a bug, or even directly fix it. Studying bugs with similar symptoms, programmers may determine how to detect or resolve them. To speed debugging, we advocate the systematic capture and reuse of debugging knowledge, much of which is currently wasted. The core challenge here is how to search for similar bugs. To tackle this problem, we exploit semantic bug information in the form of execution traces, which precisely capture bug semantics. This paper introduces novel tool and language support for semantically querying and analyzing bugs. We describe OSCILLOSCOPE, an Eclipse plugin, that uses a bug trace to exhaustively search its database for similar bugs and return their bug reports. OSCILLOSCOPE displays the traces of the bugs it returns against the trace of the target bug, so a developer can visually examine the quality of the matches. OSCILLOSCOPE rests on our bug query language (BQL), a flexible query language over traces. To realize OSCILLOSCOPE, we developed an open infrastructure that consists of a trace collection engine, BQL, a Hadoop-based query engine for BQL, a trace-indexed bug database, as well as a web-based frontend. OSCILLOSCOPE records and uploads bug traces to its infrastructure; it does so automatically when a JUnit test fails. We evaluated OSCILLOSCOPE on bugs collected from popular open-source projects. We show that OSCILLOSCOPE accurately and efficiently finds similar bugs, some of which could have been immediately used to fix open bugs.

References

[1]
B. Ashok, J. Joy, H. Liang, S. Rajamani, G. Srinivasa, and V. Vangala. DebugAdvisor: A recommender system for debugging. In Proceedings of the 17th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT International Symposium on the Foundations of Software Engineering, 2009.
[2]
I. Beer, S. Ben-David, H. Chockler, A. Orni, and R. Trefler. Explaining counterexamples using causality. In Proceedings of the International Conference on Computer Aided Verification, 2009.
[3]
N. Bettenburg, S. Just, A. Schröter, C. Weiss, R. Premraj, and T. Zimmermann. What makes a good bug report? In Proceedings of the 16th ACM SIGSOFT International Symposium on the Foundations of Software Engineering, 2008.
[4]
P. Dhoolia, S. Mani, V. S. Sinha, and S. Sinha. Debugging model-transformation failures using dynamic tainting. In Proceedings of the 24th European Conference on Object-Oriented Programming, 2010.
[5]
D. R. Engler, D. Y. Chen, and A. Chou. Bugs as inconsistent behavior: A general approach to inferring errors in systems code. In Proceedings of the ACM Symposium on Operating Systems Principles, 2001.
[6]
S. Goldsmith, R. O'Callahan, and A. Aiken. Relational queries over program traces. In Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, 2005.
[7]
A. Groce, S. Chaki, D. Kroening, and O. Strichman. Error explanation with distance metrics. International Journal on Software Tools for Technology Transfer, 8(3):229--247, 2006.
[8]
A. Groce and W. Visser. What went wrong: Explaining counterexamples. In SPIN Workshop on Model Checking of Software, 2003.
[9]
Z. Gu, E. Barr, and Z. Su. BQL: Capturing and reusing debugging knowledge. In Proceedings of the 33rd International Conference on Software Engineering (Demo Track), 2011.
[10]
D. Gusfield. Algorithms on Strings, Trees, and Sequences: Computer Science and Computational Biology. Cambridge University Press, 1997.
[11]
B. Hartmann, D. MacDougall, J. Brandt, and S. R. Klemmer. What would other programmers do: Suggesting solutions to error messages. In Proceedings of the 28th International Conference on Human Factors in Computing Systems, 2010.
[12]
K. Hoffman, P. Eugster, and S. Jagannathan. Semantics-aware trace analysis. In Proceedings of the 2009 ACM SIGPLAN Conference on Programming Language Design and Implemen-tation, 2009.
[13]
E. W. Host and B. M. Ostvold. Debugging method names. In Proceedings of the 23rd European Conference on Object-Oriented Programming, 2009.
[14]
J. A. Jones, M. J. Harrold, and J. Stasko. Visualization of test information to assist fault localization. In Proceedings of the 24th International Conference on Software Engineering, 2002.
[15]
H. Jula, D. Tralamazza, C. Zamfir, and G. Candea. Deadlock immunity: Enabling systems to defend against deadlocks. In Proceedings of the 8th USENIX Conference on Operating Systems Design and Implementation, 2008.
[16]
S. Kim, K. Pan, and E. J. Whitehead, Jr. Memories of bug fixes. In Proceedings of the 14th ACM SIGSOFT International Symposium on Foundations of Software Engineering, 2006.
[17]
A. Ko and B. Myers. A framework and methodology for studying the causes of software errors in programming systems. Journal of Visual Languages & Computing, 16(1-2):41--84, 2005.
[18]
J. R. Larus. Whole program paths. In Proceedings of the 1999 ACM SIGPLAN Conference on Programming Language Design and Implementation, 1999.
[19]
B. Liblit. Cooperative Bug Isolation. Springer-Verlag, 2007.
[20]
B. Liblit, A. Aiken, A. Zheng, andM. Jordan. Bug isolation via remote program sampling. In Proceedings of the 2003 ACM SIGPLAN Conference on Programming Language Design and Implementation, 2003.
[21]
B. Liblit, M. Naik, A. Zheng, A. Aiken, and M. Jordan. Scalable statistical bug isolation. In Proceedings of the 2005 ACM SIGPLAN Conference on Programming Language Design and Implementation, 2005.
[22]
M. Martin, B. Livshits, and M. S. Lam. Finding application er-rors and security flaws using PQL: A program query language. In Proceedings of the ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications, 2005.
[23]
T. T. Nguyen, H. A. Nguyen, N. H. Pham, J. Al-Kofahi, and T. N. Nguyen. Recurring bug fixes in object-oriented programs. In Proceedings of the 32nd International Conference on Software Engineering, 2010.
[24]
K. Olender and L. Osterweil. Cecil: A sequencing constraint language for automatic static analysis generation. IEEE Transactions on Software Engineering, 16(3):268--280, 1990.
[25]
G. Pothier and E. Tanter. Summarized trace indexing and query-ing for scalable back-in-time debugging. In Proceedings of the 25th European Conference on Object-Oriented Programming, 2011.
[26]
G. Pothier, E. Tanter, and J. Piquer. Scalable omniscient debug-ging. In Proceedings of the 22nd ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, 2007.
[27]
P. Runeson, M. Alexandersson, and O. Nyholm. Detection of duplicate defect reports using natural language processing. In Proceedings of the 29th International Conference on Software Engineering, 2007.
[28]
A. Schröter, N. Bettenburg, and R. Premraj. Do stack traces help developers fix bugs? In Proceedings of the 7th IEEE Working Conference on Mining Software Repositories, 2010.
[29]
X. Wang, L. Zhang, T. Xie, J. Anvik, and J. Sun. An approach to detecting duplicate bug reports using natural language and execution information. In Proceedings of the 30th International Conference on Software Engineering, 2008.
[30]
W. Weimer, T. Nguyen, C. L. Goues, and S. Forrest. Automatically finding patches using genetic programming. In Proceedings of the 31st International Conference on Software Engineering, 2009.
[31]
A. Zeller. Yesterday, my program worked. Today, it does not. Why? In Proceedings of the 7th ACM SIGSOFT International Symposium on the Foundations of Software Engineering, 1999.
[32]
X. Zhang, N. Gupta, and R. Gupta. Locating faults through automated predicate switching. In Proceedings of the 28th International Conference on Software Engineering, 2006.

Cited By

View all
  • (2022)Example MiningCompanion Proceedings of the 6th International Conference on the Art, Science, and Engineering of Programming10.1145/3532512.3535226(60-66)Online publication date: 21-Mar-2022
  • (2019)Modeling hierarchical usage context for software exceptions based on interaction dataAutomated Software Engineering10.1007/s10515-019-00265-3Online publication date: 13-Aug-2019
  • (2018)A blast from the pastProceedings of the 15th International Conference on Managed Languages & Runtimes10.1145/3237009.3237012(1-13)Online publication date: 12-Sep-2018
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
OOPSLA '12: Proceedings of the ACM international conference on Object oriented programming systems languages and applications
October 2012
1052 pages
ISBN:9781450315616
DOI:10.1145/2384616
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 47, Issue 10
    OOPSLA '12
    October 2012
    1011 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/2398857
    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: 19 October 2012

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. oscilloscope
  2. reusing debugging knowledge

Qualifiers

  • Research-article

Conference

SPLASH '12
Sponsor:

Acceptance Rates

Overall Acceptance Rate 268 of 1,244 submissions, 22%

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)11
  • Downloads (Last 6 weeks)3
Reflects downloads up to 02 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2022)Example MiningCompanion Proceedings of the 6th International Conference on the Art, Science, and Engineering of Programming10.1145/3532512.3535226(60-66)Online publication date: 21-Mar-2022
  • (2019)Modeling hierarchical usage context for software exceptions based on interaction dataAutomated Software Engineering10.1007/s10515-019-00265-3Online publication date: 13-Aug-2019
  • (2018)A blast from the pastProceedings of the 15th International Conference on Managed Languages & Runtimes10.1145/3237009.3237012(1-13)Online publication date: 12-Sep-2018
  • (2018)Improving IR-based bug localization with context-aware query reformulationProceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3236024.3236065(621-632)Online publication date: 26-Oct-2018
  • (2017)Back-In-Time EvaluationCompanion Proceedings of the 1st International Conference on the Art, Science, and Engineering of Programming10.1145/3079368.3079373(1-2)Online publication date: 3-Apr-2017
  • (2017)Learning Likely Invariants to Explain Why a Program Fails2017 22nd International Conference on Engineering of Complex Computer Systems (ICECCS)10.1109/ICECCS.2017.12(70-79)Online publication date: Nov-2017
  • (2015)BLASTProceedings of the Principles and Practices of Programming on The Java Platform10.1145/2807426.2807439(152-158)Online publication date: 8-Sep-2015
  • (2015)Crowd debuggingProceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering10.1145/2786805.2786819(320-332)Online publication date: 30-Aug-2015
  • (2014)TardisACM SIGPLAN Notices10.1145/2714064.266020949:10(67-82)Online publication date: 15-Oct-2014
  • (2014)TardisProceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages & Applications10.1145/2660193.2660209(67-82)Online publication date: 15-Oct-2014
  • 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