Learn more
Buy the book
For readers
Publishers' sites
Paperback · 423 pages
ISBN 978-0-12-374515-6 [US]
ISBN 978-3-89864-620-8 [DE]
|
|
The book contains a number of "How to" tips, marked with a "HOW TO" in
the margin. Unfortunately, during production, the table listing these
tips accidentally got omitted. For your convenience, here's the
complete list.
How to...
- debug a program — 22
- obtain the relevant problem information — 47
- write an effective problem report — 47
- organize the debugging process — 47
- track requirements — 47
- restore released versions — 48
- separate fixes and features — 48
- relate problems and fixes — 48
- relate problems and tests — 48
- test for debugging — 79
- automate program execution — 79
- test at the presentation layer — 80
- test at the functionality layer — 80
- test at the unit layer — 80
- isolate a unit — 80
- design for debugging — 80
- prevent unknown problems — 80
- reproduce a problem — 112
- reproduce the problem environment — 113
- reproduce the problem execution — 113
- reproduce unit behavior — 113
- simplify a test case — 138
- automate simplification — 138
- speed up automatic simplification — 139
- isolate a failure cause — 163
- understand the problem at hand — 163
- avoid endless debugging sessions — 163
- locate an error in a functional or logical program — 163
- debug quick and dirty — 163
- create a hypothesis — 163
- reason about programs — 164
- isolate value origins — 193
- slice a program — 193
- observe state — 232
- encapsulate and reuse debugging code — 232
- observe the final state of a crashing program — 233
- explore execution history — 254
- isolate value origins for a specific run — 254
- track down an infection — 254
- automate observation — 283
- use assertions — 283
- check a program against a reference program — 284
- check memory integrity — 284
- prevent memory errors in a low-level language — 284
- determine abnormal behavior — 312
- summarize behavior — 312
- detect anomalies — 312
- compare coverage — 312
- sample return values — 312
- collect data from the field — 312
- determine invariants — 312
- show causality — 326
- find a cause — 327
- find an actual cause — 327
- isolate failure causes automatically — 352
- isolate a failure cause in the input — 352
- isolate a failure cause in the thread schedule — 352
- isolate a failure-inducing code change — 352
- understand how a failure cause propagates through the program run — 382
- capture program states — 382
- compare program states — 382
- isolate failure-inducing program states — 382
- find the code that causes the failure — 402
- narrow down the defect along a cause-effect chain — 402
- isolate the infection chain — 402
- find the most likely origins — 402
- correct the defect — 402
- ensure your correction is successful — 403
- avoid introducing new problems — 403
- learn from mistakes — 403
Get the book at
Amazon.com
·
Amazon.de
Comments? Write to Andreas Zeller <zeller@whyprogramsfail.com>.
|