Index_D


D

Data-flow graphs, 215–16

Data processing (DP), 20

Data-structure books, 63–64

Data structure checking, 239–40

correct creation of, 321

defined, 239

language specifics, 240

potential problems, 239

purpose, 239

questions answered, 239

refined tactics, 239–40

related tactics, 240

tactics selection, 240

See also Debugging tactics

Data structure display, 240–42

defined, 240–41

potential problems, 241

purpose, 241

questions answered, 241

refined tactics, 241

related tactics, 241–42

tactics selection, 24

See also Debugging tactics

Data structure(s)

augmented, 466–67

defective, at end of moveup function, 92

defective, before moveup function, 98

design defects, 367–68

display, 126

dumping, 92, 312

dynamic, 374

nodes removed from, 113

printing, turning off, 138

programming language, 214

static, 373–74

tree, 122

Debugging

alternative explanation exclusion, 28–29

applying Lord Peter Wimsey to, 36

applying Professor Solomon to, 50

applying Schoenfeld to, 185

applying Sherlock Holmes to, 19

camouflage effect, 55–56

cause elimination, 28, 38

cross-disciplinary knowledge, 19–20

curiosity, 39

defined, 9

detecting vs., 26

development methodologies and, 8–12

domestic drift, 53–54

by editing, 10

eureka zone, 58

fact focus, 20–21

fact gathering, 23–25

fact organization, 42–43

gestalt understanding, 45–46

by interacting, 11

logic, 40–41

observations, 25–27

output, turning off, 307

possibilities, enumerating, 41–42

reasoning based on facts, 40

reasoning in both directions, 29–30

red herrings and, 30–31

by repeating, 11

search caution, 44

search record, 57

side effects as clues, 36–38

techniques, 510–12

testing vs., 8–9

by thinking, 10–12

unusual details, attention to, 21–23

Debugging heuristics, 201–19

categorize the problem, 208–12

choose a hypothesis (from historical data), 216–17

create a test case, 203–7

defined, 185

describing the problem, 212–13

draw a diagram, 215

explain the problem (to someone else), 213

list of, 201

recall a similar problem, 214–15

reduce required input, 207–8

review, 217–19

stabilize the problem, 202–3

Debugging infrastructure, 466–69

assertions, 469

augmented data structures, 466–67

augmented procedures, 467–68

specialized interactive debuggers, 468–69

Debugging strategies, 189–99

binary search, 190–91

breadth-first search, 192–93

choosing, 197–99

deductive-analysis, 196

defined, 185

depth-first search, 193–94

evaluation mechanisms, 189–90

greedy search, 191–92

inductive-analysis, 196–97

program slice, 195

review, 199

Debugging tactics, 185, 221–56

assert assumptions, 237–39

change storage class, 249–51

check data structures, 239–40

compile to assembly code, 252–54

defined, 185

different compiler, 251–52

different platform, 255–56

display data structures, 240–42

display execution messages, 227–30

display procedure arguments, 230–32

display variable values, 225–27

force variable value, 236–37

generate a flow trace, 232–33

generate a memory dump, 234–36

generate a variable snapshot, 233–34

initialize global variables, 247–48

initialize local variables, 248–49

list of, 221–22

military analogy, 186

read source code, 222–24

review, 25

runtime heap checking, 245–46

runtime stack checking, 243–45

runtime subscript checking, 242–43

usefulness, 187

write unit test, 224–25

Deductive-analysis strategy, 196

assumptions, 196

choosing, 198–99

control structure, 196

See also Debugging strategies

Defects

algorithm, 368–69

binding, 372–73

coding, 371–80

control-flow, 377

design, 367–71

dynamic data-structure, 374

external software, 379–80

extra operation, 376–78

finalization, 372

hardware-interface specification, 371

initialization, 371–72

invalid expression, 378–79

location, 53

memory, 375–76

missing operations, 376

object-oriented, 375

occurrence of, 46

reference, 373

similar, 151

software-interface specification, 370–71

static data-structure, 373–74

typographical, 379

user-interface specification, 369–70

value-corruption, 377–78

See also specific bugs

Depth-first search strategy, 193–94

assumptions, 193–94

choosing, 198

control structure, 194

defined, 193

using, 194

See also Debugging strategies

Describing problems, 212–13

Design errors, 367–71

algorithms, 368–69

data structures, 367–68

hardware-interface specification, 371

software-interface specification, 370–71

user-interface specification, 369–70

See also Software-defect root causes

Detail design (engineering), 435

Details, attention to, 21–23

Detective(s), 15–32

fiction, 16

Lord Peter Wimsey, 133–47

methods, 18–31

Professor Solomon, 49–61

Sherlock Holmes, 17–31

way of, 3

worldview of, 15–16

Development

engineering, 435

environment, 215

stage, 537–50

Diachronic approach, 27

Diagrams

application-specific, 216

control-flow, 215

data-flow, 215–16

drawing, 215–16

hypotheses, 216

of static relationships, 216

Different compiler, 251–52

defined, 251

language specifics, 252

potential problems, 251

purpose, 251

questions answered, 251

refined tactics, 251

related tactics, 251

tactics selection, 251–52

See also Debugging tactics

Different platform, 255–56

defined, 255

potential problems, 255

purpose, 255

questions answered, 255

refined tactics, 255

related tactics, 255

tactics selection, 255–56

See also Debugging tactics

Diff program, 125

Disjunction effect, 413

Domestic drift, 53–54

Drawing diagrams, 215–16

application-specific, 216

control-flow, 215

data-flow, 215–16

See also Debugging heuristics

Dynamic analysis, 488

Dynamic-analysis tools, 488–503

analysis comparison, 504–5

BoundsChecker, 493–95

Insure++, 489–93

mpatrol, 497–503

Purify, 495–97

Dynamic data-structure problems, 374




Debugging by Thinking. A Multidisciplinary Approach
Debugging by Thinking: A Multidisciplinary Approach (HP Technologies)
ISBN: 1555583075
EAN: 2147483647
Year: 2002
Pages: 172

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net