Group: debugging

topics > computer science > Group: programming

debugging by reading code
debugging by usage rules
debugging techniques
execution tracing
incremental execution
monitored variable
path expression
reversible execution
exception handling
software maintenance

automated testing
automated tests of specifications and designs
bug tracking system
compiler error checking
consistency testing
immediate computation
programming environment
reliability of distributed systems
run-time assertions
software maintenance by patching


Debugging is one of the true arts of programming. A program exhibits unexpected behavior which may be intermittent, catastrophic, or simply an annoyance. The programmer must determine the conditions which caused the error, the program statements that caused the error, and then the modifications to fix the error. Afterwards the correction itself must be tested. During debugging, the programmer determines the program's internal behavior by reading the program's description, by stepping through the program, and by looking at the program's internal state. Debugging is closely tied with program development, testing, and maintenance. Each programmer tends to develop his own style; no really fixed method exists. Close reading of program text is effective, so is tracing program execution, symbolic testing, state dumps, consistency checks, and monitored variables. An understandable program representation always helps. A check list may catch many characteristic errors of a language, for instance Algol's dropped semicolon or Fortran's misspelled variable name. Debugging is easier if control structures and operators are restricted. Consistency checks help guarantee intact data structures, indicating correct program function. (cbb 5/80)
Subtopic: development vs. production environments up

Quote: conditional trace and asserts bifurcates software; performance problems are found in production, but can only be understood in a development environment [»cantB2_2006]

Subtopic: debugging information up

Quote: two phases of debugging--gather a small amount of information to get an overview, later need as much information as possible [»kennMS3_1983]

Subtopic: debugging as search from symptom to cause up

Quote: in debugging, it is important to reason backward from effects to causes [»ungaD4_1997]
Quote: basic method of debugging is working backwards from symptom of error to its cause [»weisM7_1982]
Quote: programming involves a concentrated search for the reasons behind irregularities
Quote: general debugging strategy: select a debugging tactic, find a clue, and develop a hypothesis [»goulJD9_1973]
Quote: testing detects errors by their effects; debugging searches for the cause of errors [»clarLA8_1983]

Subtopic: discipline up

Quote: human reason stands in need of discipline to expose the illusions which it originates; this discipline is exercised by reason alone [»kantI_1781, OK]

Subtopic: repeatible vs. unreproducible up

Quote: bugs are discovered when they are repetitious; problem of non-recurring bugs such as race conditions [»cbb_1980, OK]

Subtopic: simplification up

Quote: automatic simplification of erroneous SQL; helped debug problems [»slutD8_1998, OK]

Subtopic: debugging parallel programs up

Quote: deadlocks are easy to detect; use a debugger to look at relevant threads, especially those tied to a mutex or condition variable [»birrAD_1991]

Subtopic: parallel debugging up

Quote: given enough eyeballs, all bugs are shallow
Quote: with enough testers and developers, every problem can be identified and fixed easily; debugging is parallelizable, unlike development [»raymES3_1998]

Subtopic: integration bugs up

Quote: unit verification by debugging may cause design faults when the fixed modules are combined [»cobbRH11_1990]
Quote: debugging is tiresome, expensive, and unpredictable, particularly when integrating subprograms from many programmers [»hoarCA_1974]

Subtopic: cycle time up

Quote: speed of compilation is important for debugging [»hoarCA_1974]

Subtopic: reopened bugs up

Quote: bug fixes were 50% more difficult than new code, structure improvements, or code inspection suggestions [»atkiDL7_2002]
Quote: in most cases, the cause of a software product failure was introduced while fixing another failure [»cobbRH11_1990]
Quote: did not find error corrections to software causing new errors; could be result of experience or of monitoring development [»weisDM2_1985]
Quote: error lifetime is how many attempts needed to solve an error

Subtopic: memory debugging up

Quote: easier debugging if freelist links at the end of a buffer
Quote: the slab allocator assists debugging with auditing, verfication, redzone checking, page-per-buffer mode, and leak detection [»bonwJ6_1994]

Subtopic: debugging is time consuming up

Quote: novice users are surprised at the effort needed to get a program to work [»instrumentcontrol]
Quote: bug fixes are 26% more difficult than new functionality of similar size [»gravTL5_2001]
Quote: programming is confusing for first-time users; it makes smart people feel dumb [»instrumentcontrol]
Quote: Wilkes realized early that debugging would occupy a good part of his life [»wilkMV_1985]
Quote: debugging is tiresome, expensive, and unpredictable, particularly when integrating subprograms from many programmers [»hoarCA_1974]

Subtopic: glossary up

QuoteRef: johnMS2_1982 ;;A software debugging glossary [and bibliography]

Subtopic: problems with debugging up

Quote: debugging is testing programs on cases one hopes are typical, until it seems to work

Group: debugging up

Topic: bugs (66 items)
Topic: debugger (37 items)
Topic: debugging by reading code (11 items)
Topic: debugging by usage rules (41 items)
Topic: debugging techniques (23 items)
Topic: execution tracing (42 items)
Topic: incremental execution (22 items)
Topic: monitored variable (28 items)
Topic: path expression (14 items)
Topic: reversible execution
(20 items)

Related Topics up

Group: exception handling   (12 topics, 314 quotes)
Group: software maintenance   (14 topics, 368 quotes)
Group: testing   (18 topics, 557 quotes)

Topic: automated testing (25 items)
Topic: automated tests of specifications and designs (12 items)
Topic: bug tracking system (34 items)
Topic: compiler error checking (16 items)
Topic: consistency testing (60 items)
Topic: immediate computation (8 items)
Topic: programming environment (46 items)
Topic: reliability of distributed systems (35 items)
Topic: run-time assertions (25 items)
Topic: software maintenance by patching
(27 items)

Updated barberCB 6/05
Copyright © 2002-2008 by C. Bradford Barber. All rights reserved.
Thesa is a trademark of C. Bradford Barber.