Topic: bugs
Topic: debugger
Topic: debugging by reading code
Topic: debugging by usage rules
Topic: debugging techniques
Topic: execution tracing
Topic: incremental execution
Topic: monitored variable
Topic: path expression
Topic: reversible execution
Group: exception handling
Group: software maintenance
Group: testing
Topic: automated testing
Topic: automated tests of specifications and designs
Topic: bug tracking system
Topic: compiler error checking
Topic: consistency testing
Topic: immediate computation
Topic: programming environment
Topic: reliability of distributed systems
Topic: run-time assertions
Topic: software maintenance by patching
| |
Summary
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
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
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
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
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
Quote: bugs are discovered when they are repetitious; problem of non-recurring bugs such as race conditions [»cbb_1980, OK]
| Subtopic: simplification
Quote: automatic simplification of erroneous SQL; helped debug problems [»slutD8_1998, OK]
| Subtopic: debugging parallel programs
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
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
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
Quote: speed of compilation is important for debugging [»hoarCA_1974]
| Subtopic: reopened bugs
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
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
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
QuoteRef: johnMS2_1982 ;;A software debugging glossary [and bibliography]
| Subtopic: problems with debugging
Quote: debugging is testing programs on cases one hopes are typical, until it seems to work [»mccaJ8_1962]
|
Group: debugging
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
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)
|