Calmness, 52
Camouflage effect, 55–56
Case study I, 63
bug 1, 78–82
bug 2, 83–89
bug 3, 89–94
bug 4, 94–111
bug 5, 111–14
bug 6, 115–17
bug 7, 117–22
bug 8, 122–26
bug 9, 126–32
bug 10, 133–36
bug 11, 136–43
bug 12, 143–45
bug 13, 145–53
bug 14, 153–54
bug 15, 155–74
code, 64–77
complete binary tree, 64
defined, 63–64, 279–80
heap sorts, 63–64
program, 63–77
Case study II, 257–79
algorithm, 258
bug 1, 262–65
bug 2, 265–67
bug 3, 267–68
bug 4, 268–79
code, 258–62
defined, 257–58
final source, 275–79
final test, 269–74
program, 257–62
Case study III, 279–360
bug 1, 303–7
bug 2, 307–11
bug 3, 311–16
bug 4, 316–17
bug 5, 317–19
bug 6, 319–23
bug 7, 323–25
bug 8, 326–28
bug 9, 328–31
bug 10, 331–34
code, 281–303
expression tree, 280
final source, 338–60
final test, 334–38
idioms, 280
idioms database, 281
matching phase, 281
numbering phase, 280, 281
program, 279–303
Categorizing problems, 208–12
completion, 209–10
correctness, 208–9
efficiency, 211–12
robustness, 210–11
See also Debugging heuristics
Cause-and-event charting, 381–82
construction steps, 382
defined, 381
symbols, 381
Causes
eliminating, 28, 38
list of, 151
C/C++ union, 208
Certainty effect, 413
Chomsky hierarchy, 474–76
context-free grammars, 475
context-sensitive grammars, 475–76
phrase-structure grammar, 476
regular grammars, 475
Class-hierarchy browser, 224
Class structure metarules, 455–57
commentary, 456
convention examples, 456–57
See also Programming conventions
Code
blocks, 190
problems, 60
read tactic, 222–24
CodeSurfer, 482–85
analysis comparison, 504
defined, 482
dicing, 483
features, 482–83
slices, 483
technology, 484
usage, 484–85
See also Static-analysis tools
Coding errors, 371–80
binding, 372–73
control-flow, 377
dynamic data-structure, 374
external software, 379–80
extra operations, 376–77
finalization, 372
initialization, 371–72
invalid expressions, 378–79
memory, 375–76
missing operations, 376
object-oriented, 375
reference, 373
static data-structure, 373–74
typographical, 379
value-corruption, 377–78
See also Software-defect root causes
Cognitive activities, 8
Comfort, 52
Common sense, 10
Compilers
different, using, 251–52
problem, cutting down, 206–7
Compile to assembly code, 252–54
defined, 252
language specifics, 254
potential problems, 253
purpose, 252
questions answered, 252
refined tactics, 253
related tactics, 253–54
tactics selection, 254
See also Debugging tactics
Complete binary trees, 64
Completion, 209–10
hypotheses, 210
questions, 209–10
Complexity errors, 411–12
Computer scientists
analysis comparison, 503–5
dynamic-analysis tools, 488–503
linguistic formalism, 474–78
static-analysis tools, 478–88
way of, 4, 473–507
worldview, 474
Conception stage, 438
design write-out, 443–44
error avoidance, 442–45
prototype implementation, 444–45
Concurrent Versions System (CVS), 59
Confidence, 52
Constructive activities, 8
Control, per Schoenfeld, 184–85
Control-flow graphs, 215
Control-flow problems, 377
Control structures
breadth-first search strategy, 192–93
deductive-analysis strategy, 196
depth-first search strategy, 194
greedy search strategy, 191–92
inductive-analysis strategy, 197
program slice strategy, 195
See also Debugging strategies
Convex Application Compiler, 468
Correction. See Fault and correction
Correctness, 208–9
hypotheses, 209
questions, 208–9
Cross-disciplinary knowledge, 19–20
Cupillari, Antonella, 179–80
Curiosity, 39