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.
Similar content being viewed by others
References
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)
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)
Artho, C.: Combining Static and Dynamic Analysis to Find Multi-threading Faults Beyond Data Races. PhD thesis, ETH Zürich (2005)
Artho, C.: Iterative delta debugging. In: Proceedings of the 4th Haifa Verification Conference (HVC 2008). Haifa, Israel (2008)
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)
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)
Beck K.: Extreme programming explained: embrace change. Addison-Wesley Longman Publishing Co., Inc., Reading (2000)
Biere A., Cimatti A., Clarke E., Strichman O., Zhu Y.: Bounded model checking. Adv Comput 58, 118–149 (2003)
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)
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)
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)
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)
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)
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)
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)
Gardner, B.: Uncrustify code beautifier. http://uncrustify.sourceforge.net/ (2009)
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)
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)
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)
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)
Korel B., Laski J.: Dynamic program slicing. Inf. Process. Lett. 29(3), 155–163 (1988)
Liblit B., Aiken A., Zheng A., Jordan M.: Bug isolation via remote program sampling. SIGPLAN Not. 38(5), 141–154 (2003)
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)
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)
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)
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)
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)
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)
Myers G.: Art of Software Testing. John Wiley & Sons, Inc., New York (1979)
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)
Peled D.: Software Reliability Methods. Springer, Berlin (2001)
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)
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)
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)
Sutton M., Greene A., Amini P.: Fuzzing: Brute Force Vulnerability Discovery. Addison-Wesley Professional, Reading (2007)
Takanen A., DeMott J., Miller C.: Fuzzing for Software Security Testing and Quality Assurance. Artech House, Inc., Norwood (2008)
Torvalds, L., Hamano, C.: git-bisect(1) manual page. http://kernel.org/pub/software/scm/git/docs/git-bisect.html (2009)
Vida, A.: Random test case generation and delta debugging for bit-vector logic with arrays. Master’s thesis, Johannes Kepler University, Linz (2008)
Visser W., Havelund K., Brat G., Park S., Lerda F.: Model checking programs. Autom. Softw. Eng. J. 10(2), 203–232 (2003)
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)
Weiser M.: Programmers use slices when debugging. Commun. ACM 25(7), 446–452 (1982)
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)
Zeller A., Hildebrandt R.: Simplifying and isolating failure-inducing input. Softw. Eng. 28(2), 183–200 (2002)
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)
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)
Author information
Authors and Affiliations
Corresponding author
Rights 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
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10009-010-0139-9