Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
article

Iterative delta debugging

Published: 01 June 2011 Publication History

Abstract

Automated debugging attempts to locate the reason for a failure. Delta debugging minimizes the difference between two inputs, where one input is processed correctly while the other input causes a failure, using a series of test runs to determine the outcome of applied changes. Delta debugging is applicable to inputs or to the program itself, as long as a correct version of the program exists. However, complex errors are often masked by other program defects, making it impossible to obtain a correct version of the program through delta debugging in such cases. Iterative delta debugging extends delta debugging and removes a series of defects step by step, until the originally unresolved defect is isolated. The method is automated and managed to localize a bug in some real-life examples.

References

[1]
Abreu, R., Zoeteweij, P., van Gemund, A.: Sepctrum-based multiple fault localization. In: Proceedings of the 24th International Conference on Automated Software Engineering (ASE 2009), pp. 88---102. Auckland, New Zealand (2009)
[2]
Ali, S., Andrews, J., Dhandapani, T., Wang, W.: Evaluating the accuracy of fault localization techniques. In: Proceedings of the 24th International Conference on Automated Software Engineering (ASE 2009), pp. 76---87. Auckland, New Zealand (2009)
[3]
Artho, C.: Combining Static and Dynamic Analysis to Find Multi-threading Faults Beyond Data Races. PhD thesis, ETH Zürich (2005)
[4]
Artho, C.: Iterative delta debugging. In: Proceedings of the 4th Haifa Verification Conference (HVC 2008). Haifa, Israel (2008)
[5]
Artho, C., Schuppan, V., Biere, A., Eugster, P., Baur, M., Zweimüller, B.: JNuke: Efficient Dynamic Analysis for Java. In: Proceedings of the 16th International Conference on Computer Aided Verification (CAV 2004). LNCS, vol. 3114, pp. 462---465. Springer, Boston (2004)
[6]
Artho, C., Shibayama, E., Honiden, S.: Iterative delta debugging. In: 19th IFIP International Conference on Testing of Communicating Systems (TESTCOM 2007). Poster/Tools session, Tallinn, Estonia (2007)
[7]
Beck K.: Extreme programming explained: embrace change. Addison-Wesley Longman Publishing Co., Inc., Reading (2000)
[8]
Biere A., Cimatti A., Clarke E., Strichman O., Zhu Y.: Bounded model checking. Adv Comput 58, 118---149 (2003)
[9]
Brummayer, R., Biere, A.: Fuzzing and delta-debugging SMT solvers. In: Proceedings of the 7th International Workshop on Satisfiability Modulo Theories (SMT'09). Montreal, Canada (2009)
[10]
Chilimbi, T., Liblit, B., Mehra, K., Nori, A., Vaswani, K.:Holmes: Effective statistical debugging via efficient path profiling. In: Proceedings of the 31st International Conference on Software Engineering (ICSE 2009), pp. 34---44. ACM SIGSOFT and IEEE, IEEE, Vancouver, Canada (2009)
[11]
Choi, J., Zeller, A.: Isolating failure-inducing thread schedules. In: Proceedings of the ACM/SIGSOFT International Symposium on Software Testing and Analysis (ISSTA 2002), pp. 210---220. ACM, Roma (2002)
[12]
Csallner C., Smaragdakis Y., Xie T.: DSD-Crasher: a hybrid analysis tool for bug finding. ACM Trans. Softw. Eng. Methodol. (TOSEM) 17(2), 1---37 (2008)
[13]
Dallmeier, V., Zeller, A., Meyer, B.: Generating fixes from object behavior anomalies. In: Proceedings of the 24th International Conference on Automated Software Engineering (ASE 2009), pp. 550---554, Auckland, New Zealand (2009)
[14]
Engler, D., Chen, D., Chou, A.: Bugs as deviant behavior: A general approach to inferring errors in systems code. In: Symposium on Operating Systems Principles, pp. 57---72 (2001)
[15]
Ernst M., Perkins J., Guo P., McCamant S., Pacheco C., Tschantz M., Xiao C.: The Daikon system for dynamic detection of likely invariants. Sci. Comput. Program. 69(1---3), 35---45 (2007)
[16]
Gardner, B.: Uncrustify code beautifier. http://uncrustify.sourceforge.net/ (2009)
[17]
Gondow, K., Suzuki, T., Kawashima, H.: Binary-level lightweight data integration to develop program understanding tools for embedded software in C. In: Proceedings of the 11th Asia-Pacific Software Engineering Conference (APSEC 2004), pp. 336---345. IEEE Computer Society, Washington (2004)
[18]
Gupta, N., He, H., Zhang, X., Gupta, R.: Locating faulty code using failure-inducing chops. In: Proceedings of the 20th International Conference on Automated Software Engineering (ASE 2005), pp. 263---272. ACM, Long Beach (2005)
[19]
Jones, J., Harrold, M.: Empirical evaluation of the Tarantula automatic fault-localization technique. In: Proceedings of the 20th International Conference on Automated Software Engineering (ASE 2005), pp. 273---282. ACM, Long Beach (2005)
[20]
Jones, J., Harrold, M., Stasko, J.: Visualization of test information to assist fault localization. In: Proceedings of the 24th International Conference on Software Engineering (ICSE 2002), pp. 467---477. ACM, Orlando (2002)
[21]
Korel B., Laski J.: Dynamic program slicing. Inf. Process. Lett. 29(3), 155---163 (1988)
[22]
Liblit B., Aiken A., Zheng A., Jordan M.: Bug isolation via remote program sampling. SIGPLAN Not. 38(5), 141---154 (2003)
[23]
Lindholm, T., Kangasharju, J., Tarkoma, S.: Fast and simple XML tree differencing by sequence alignment. In: Proceedings of the 2006 ACM symposium on Document engineering (DocEng 2006), pp. 75---84. ACM, New York (2006)
[24]
Malik, M., Ghori, K., Elkarablieh, B., Khurshid, S.: A case for automated debugging using data structure repair. In: Proceedings of the 24th International Conference on Automated Software Engineering (ASE 2009), pp. 620---624. Auckland, New Zealand (2009)
[25]
Manevich, R., Sridharan, M., Adams, S., Das, M., Yang, Z.: PSE: Explaining Program Failures via Postmortem Static Analysis. In: Proceedings of the 12th International Symposium on the Foundations of Software Engineering (FSE 2004), pp. 63---72. ACM, Newport Beach, USA (2004)
[26]
Maruyama K., Yamamoto S.: A tool platform using an XML representation of source code information. IEICE Trans. Inf. Syst. E89-D(7), 2214---2222 (2006)
[27]
Mayer, W., Stumptner, M.: Evaluating models for model-based debugging. In: Proceedings of the 23rd International Conference on Automated Software Engineering (ASE 2008), pp. 128---137. IEEE Computer Society, L'Aquila, Italy (2008)
[28]
Misherghi, G., Su, Z.: HDD: hierarchical delta debugging. In: Proc. 28th Int. Conf. on Software Engineering (ICSE 2006), pp. 142---151. ACM Press, Shanghai (2006)
[29]
Myers G.: Art of Software Testing. John Wiley & Sons, Inc., New York (1979)
[30]
Nethercote, N., Seward, J.: Valgrind: A program supervision framework. In: Proceedings of the 3rd International Workshop on Run-time Verification (RV 2003), vol. 89 of ENTCS, pp. 22---43, Elsevier, Boulder (2003)
[31]
Peled D.: Software Reliability Methods. Springer, Berlin (2001)
[32]
Ren, X., Ryder, B.: Heuristic ranking of Java program edits for fault localization. In: Proceedings of the ACM/SIGSOFT International Symposium on Software Testing and Analysis (ISSTA 2007), pp. 239---249. ACM, London (2007)
[33]
Ren, X., Ryder, B., Stoerzer, M., Tip, F.: Chianti: a change impact analysis tool for Java programs. In: Proceedings of the 27th International Conference on Software Engineering (ICSE 2005), pp. 664---665. ACM, St. Louis (2005)
[34]
Renieris, M., Reiss, S.: Fault localization with nearest neighbor queries. In: Proceedings of the 18th International Conference on Automated Software Engineering (ASE 2003), pp. 30. IEEE Computer Society, Montreal (2003)
[35]
Sutton M., Greene A., Amini P.: Fuzzing: Brute Force Vulnerability Discovery. Addison-Wesley Professional, Reading (2007)
[36]
Takanen A., DeMott J., Miller C.: Fuzzing for Software Security Testing and Quality Assurance. Artech House, Inc., Norwood (2008)
[37]
Torvalds, L., Hamano, C.: git-bisect(1) manual page. http://kernel.org/pub/software/scm/git/docs/git-bisect.html (2009)
[38]
Vida, A.: Random test case generation and delta debugging for bit-vector logic with arrays. Master's thesis, Johannes Kepler University, Linz (2008)
[39]
Visser W., Havelund K., Brat G., Park S., Lerda F.: Model checking programs. Autom. Softw. Eng. J. 10(2), 203---232 (2003)
[40]
Weimer, W., Nguyen, T., Le Goues, C., Forrest, S.: Automatically finding patches using genetic programming. In: Proceedings of the 31st International Conference on Software Engineering (ICSE 2009), pp. 364---374. IEEE Computer Society, Vancouver (2009)
[41]
Weiser M.: Programmers use slices when debugging. Commun. ACM 25(7), 446---452 (1982)
[42]
Wotawa, F., Stumptner, M., Mayer, W.: Model-based debugging or how to diagnose programs automatically. In: Proceedings of the 15th International Conference on Industrial and Engineering Applications of Artificial Intelligence and Expert Systems (IEA/AIE 2002), pp. 746---757. Springer, London (2002)
[43]
Zeller A., Hildebrandt R.: Simplifying and isolating failure-inducing input. Softw. Eng. 28(2), 183---200 (2002)
[44]
Zhang, S., Gu, Z., Lin, Y., Zhao, J.: Celadon: a change impact analysis tool for aspect-oriented programs. In: ICSE Companion 2008: Companion of the 30th International Conference on Software Engineering, pp. 913---914. ACM, Leipzig (2008)
[45]
Zhang, S., Lin, Y., Gu, Z., Zhao, J.: Effective identification of failure-inducing changes: a hybrid approach. In: Proceedings of the 8th ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering (PASTE 2008), pp. 77---83. ACM, Atlanta (2008)

Cited By

View all
  • (2024)Fuzzing API Error Handling Behaviors using Coverage Guided Fault InjectionProceedings of the 19th ACM Asia Conference on Computer and Communications Security10.1145/3634737.3637650(1495-1509)Online publication date: 1-Jul-2024
  • (2023)DeepDebugger: An Interactive Time-Travelling Debugging Approach for Deep ClassifiersProceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3611643.3616252(973-985)Online publication date: 30-Nov-2023
  • (2023)Silent Compiler Bug De-duplication via Three-Dimensional AnalysisProceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3597926.3598087(677-689)Online publication date: 12-Jul-2023
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image International Journal on Software Tools for Technology Transfer (STTT)
International Journal on Software Tools for Technology Transfer (STTT)  Volume 13, Issue 3
June 2011
84 pages
ISSN:1433-2779
EISSN:1433-2787
Issue’s Table of Contents

Publisher

Springer-Verlag

Berlin, Heidelberg

Publication History

Published: 01 June 2011

Author Tags

  1. Automated debugging
  2. Automated repair
  3. Delta debugging
  4. Fault localization
  5. Mining

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 20 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Fuzzing API Error Handling Behaviors using Coverage Guided Fault InjectionProceedings of the 19th ACM Asia Conference on Computer and Communications Security10.1145/3634737.3637650(1495-1509)Online publication date: 1-Jul-2024
  • (2023)DeepDebugger: An Interactive Time-Travelling Debugging Approach for Deep ClassifiersProceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3611643.3616252(973-985)Online publication date: 30-Nov-2023
  • (2023)Silent Compiler Bug De-duplication via Three-Dimensional AnalysisProceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3597926.3598087(677-689)Online publication date: 12-Jul-2023
  • (2022)RegMiner: mining replicable regression dataset from code repositoriesProceedings of the 30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3540250.3558929(1711-1715)Online publication date: 7-Nov-2022
  • (2022)RegMiner: towards constructing a large regression dataset from code evolution historyProceedings of the 31st ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3533767.3534224(314-326)Online publication date: 18-Jul-2022
  • (2021)Explaining inference queries with bayesian optimizationProceedings of the VLDB Endowment10.14778/3476249.347630414:11(2576-2585)Online publication date: 1-Jul-2021
  • (2020)Code Renewability for Native Software ProtectionACM Transactions on Privacy and Security10.1145/340489123:4(1-31)Online publication date: 25-Aug-2020
  • (2020)A Survey of Compiler TestingACM Computing Surveys10.1145/336356253:1(1-36)Online publication date: 6-Feb-2020
  • (2019)Binary reduction of dependency graphsProceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3338906.3338956(556-566)Online publication date: 12-Aug-2019
  • (2018)Automated patch extraction via syntax- and semantics-aware Delta debugging on source code changesProceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3236024.3236047(598-609)Online publication date: 26-Oct-2018
  • Show More Cited By

View Options

View options

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media