Skip to main content
Log in

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

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)

    Google Scholar 

  8. Biere A., Cimatti A., Clarke E., Strichman O., Zhu Y.: Bounded model checking. Adv Comput 58, 118–149 (2003)

    Google Scholar 

  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)

    Article  Google Scholar 

  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)

    Article  MathSciNet  MATH  Google Scholar 

  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)

    Article  MATH  Google Scholar 

  22. Liblit B., Aiken A., Zheng A., Jordan M.: Bug isolation via remote program sampling. SIGPLAN Not. 38(5), 141–154 (2003)

    Article  Google Scholar 

  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)

    Article  Google Scholar 

  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)

    Google Scholar 

  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)

    MATH  Google Scholar 

  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)

    Google Scholar 

  36. Takanen A., DeMott J., Miller C.: Fuzzing for Software Security Testing and Quality Assurance. Artech House, Inc., Norwood (2008)

    MATH  Google Scholar 

  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)

    Article  Google Scholar 

  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)

    Article  Google Scholar 

  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)

    Article  Google Scholar 

  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)

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Cyrille Artho.

Rights and permissions

Reprints and permissions

About this article

Cite this article

Artho, C. Iterative delta debugging. Int J Softw Tools Technol Transfer 13, 223–246 (2011). https://doi.org/10.1007/s10009-010-0139-9

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10009-010-0139-9

Keywords

Navigation