# Debugging

Debugging is the process of finding and resolving defects or problems within a computer program that prevent correct operation of computer software or a system.

## Quotes

* Even perfect program verification can only establish that a program meets its specification. […] Much of the essence of building a program is in fact the debugging of the specification.
** Fred Brooks (1986), "No Silver Bullet", Information Processing 1986, the Proceedings of the IFIP Tenth World Computing Conference, H. K. Kugler, ed., Elsevier Science, 1986, p. 1069 ff.
** Reprinted in the IEEE magazine Computer 20 (4), (April 1987), p. 43 ff.; and in The Mythical Man-Month Anniversary Edition (1995), ISBN 0-201-83595-9
* Much to the surprise of the builders of the first digital computers, programs written for them usually did not work.
** Rodney Brooks, Programming in Common Lisp, Wiley, 1985, p. 94
* bug, n: An elusive creature living in a program that makes it incorrect. The activity of "debugging", or removing bugs from a program, ends when people get tired of doing it, not when the bugs are removed.
** Datamation, January 15, 1984
* If debugging is the process of removing bugs, then programming must be the process of putting them in.
** Edsger W. Dijkstra
* Testing can only prove the presence of bugs, not their absence.
** Edsger W. Dijkstra
* silver bullet (SIL-vuhr BOOL-it) noun: A quick solution to a thorny problem. [From the belief that werewolves could be killed when shot with silver bullets.] "Writing code, he (Stuart Feldman) explains, is like writing poetry: every word, each placement counts. Except that software is harder, because digital poems can have millions of lines which are all somehow interconnected. Try fixing programming errors, known as bugs, and you often introduce new ones. So far, he laments, nobody has found a silver bullet to kill the beast of complexity."
** Survey: The Beast of Complexity; The Economist (London, UK); Apr 14, 2001.
* From then on, when anything went wrong with a computer, we said it had bugs in it.
** RADM Grace Hopper, on the removal of a 2-inch-long moth from the Harvard Mark I experimental computer at Harvard in August 1945, as quoted in Time (16 April 1984)
* The most effective debugging tool is still careful thought, coupled with judiciously placed print statements.
** Brian Kernighan, "Unix for Beginners" (1979)
* Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it?
** Brian Kernighan, "The Elements of Programming Style", 2nd edition, chapter 2
* Beware of bugs in the above code; I have only proved it correct, not tried it.
** Donald Knuth, March 22, 1977
* A documented bug is not a bug; it is a feature.
** James P. MacLennan (Probably not original)
* Given enough eyeballs, all bugs are shallow.
** Eric S. Raymond (Linus' Law), The Cathedral and the Bazaar
* As soon as we started programming, we found to our surprise that it wasn't as easy to get programs right as we had thought. Debugging had to be discovered. I can remember the exact instant when I realized that a large part of my life from then on was going to be spent in finding mistakes in my own programs.
** Maurice Wilkes discovers debugging, 1949. Lecture titled "The Design and Use of the EDSAC" delivered by Maurice Wilkes at the Digital Computer Museum, September 23, 1979 (video; excerpts)
* The last bug isn't fixed until the last user is dead.
** Sidney Markowitz, 1995

## See also

* Computer science
* Programming