Delta debugging: Difference between revisions

Content deleted Content added
External links: Added Udacity course
Cleanup. Notable.
 
(47 intermediate revisions by 29 users not shown)
Line 1:
{{Sources exist|date=January 2025}}
{{multiple issues|
{{Cleanup|reason = spelling, grammar, capitalization, word usage, and punctuation need to be checked|date = December 2014}}
{{primary sources|date=April 2011}}
{{notability|date=October 2010}}
}}
 
'''Delta debugging''' is a methodology to automate the [[debugging]] of programs using a scientific approach of hypothesis-trial-result loop. This methodology was first developed by Andreas Zeller of the Saarland University in 1999.<ref>{{cite conference |last1=Zeller |first1=Andreas |book-title=Software Engineering — ESEC/FSE '99 |volume=1687 |pages=253–267 |title=Yesterday, my program worked. Today, it does not. Why?|date=1999 |publisher=Springer |doi=10.1007/3-540-48166-4_16 |series=Lecture Notes in Computer Science |isbn=978-3-540-66538-0}}</ref>
{{Portal|Software Testing}}
'''Delta Debugging''' automates the scientific method of [[debugging]]. The Delta Debugging algorithm isolates failure causes automatically - by systematically narrowing down failure-inducing circumstances until a minimal set remains. Delta Debugging has been applied to isolate failure-inducing program input (e.g. an HTML page that makes a Web browser fail), failure-inducing user interaction (e.g. the keystrokes that make a program crash), or failure-inducing changes to the program code (e.g. after a failing regression test).
 
The delta debugging algorithm isolates failure causes automatically by systematically narrowing down failure-inducing circumstances until a minimal set remains. For example, if you can supply a test case that will produce the bug you are looking for, then you can feed that to the delta debugging algorithm, which will then trim lines of code that are not needed to reproduce the bug, until a 1-minimal program is found.
== Software ==
* [http://www.st.cs.uni-saarland.de/askigor/downloads/ Igor - command line tool]
* [http://www.st.cs.uni-sb.de/eclipse/ Eclipse Plug-Ins]
** DDinput - Failure-Inducing Input
** [http://ddchange.martin-burger.de/ DDchange] - Failure-Inducing Changes
** DDstate - Failure-Inducing States
* [https://www.st.cs.uni-saarland.de/dd/DD.py DD.py] - a Python implementation of Delta Debugging
 
'''Delta Debugging''' automates the scientific method of [[debugging]]. The Delta Debugging algorithm isolates failure causes automatically - by systematically narrowing down failure-inducing circumstances until a minimal set remains. Delta Debugging has been applied to isolate failure-inducing program input (e.g. an HTML page that makes a Web browser fail), failure-inducing user interaction (e.g. the keystrokes that make a program crash), or failure-inducing changes to the program code (e.g. after a failing regression test).
==References==
* Andreas Zeller: <cite>Why Programs Fail: A Guide to Systematic Debugging</cite>, Morgan Kaufmann, ISBN 1-55860-866-4
* [http://www.youtube.com/watch?v=SzRqd4YeLlM Learning from Code History] A presentation at Google Tech Talk from the original inventor of the Delta Debugging
 
Software development tools inspired by delta debugging include the [[Bisection (software engineering)|bisect commands]] of [[revision control]] systems (e.g., git-bisect, svn-bisect, hg-bisect, etc.), which, instead of working on the program's code, apply the delta debugging methodology on the code history by comparing various versions until the faulty change is found.
==External links==
*[http://www.st.cs.uni-sb.de/dd/ Delta Debugging project] - extensive collection of links to delta debugging tools and methods
*[http://delta.tigris.org/ Delta] - a computer program to minimize "interesting" files subject to a test of their interestingness
*[https://www.udacity.com/course/software-debugging--cs259 Udacity course on Software Debugging]
 
==See also==
 
* [[Bisection (software engineering)]]
{{Compu-prog-stub}}
* [[Program slicing]]
 
==References==
<references />
 
==External links==
* [http://www.st.cs.uni-sb.de/eclipsedd/ EclipseDelta Plug-InsDebugging project]
 
[[Category:DebuggersDebugging]]