Home

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]
     

Errata

A debugging book can have bugs, too! This page contains all the errors as found in the book and (hopefully) fixed in subsequent printings.

Errata in the second edition

Thanks to all those who reported these issues:

  • [RK] — Raphael Knaus on 2009-11-26

4 Reproducing Problems

  • Page 93: The ControlledMap destructor should read virtual ~ControlledMap() (note the tilde and the virtual declaration) [RK]

Errata in the first edition

Thanks to all those who reported these issues:

  • [AL] — Andreas Leitner on 2005-11-01
  • [MB] — Martin Burger on 2005-11-12
  • [RI] — Roland Illig on 2006-02-05
  • [YW] — Yong-Wu Wang on 2006-07-10
(People having read Chapter 2 "Tracking Problems" will point out that I should use a bug database instead of this page—I'm working on it.)


Table of Contents

About the Author

Preface


1 How Failures Come to Be

  • Page 8 — Fig. 1.2: Replace "The program state" by "A program state". [RI]
  • Page 13 — Fig. 1.6: Replace "argv[1]" by "argv[2]" and "argv[0]" by "argv[1]". [RI]
  • Page 23 — Replace "Dijkstra's quote that testing can only show the absence of bugs" by "Dijkstra's quote that testing can only show the presence of bugs". [YW]

2 Tracking Problems

  • Page 51 — Exercise 2.4: Replace "MOZILLA" by "BUGZILLA". [YW]

3 Making Programs Fail

  • Page 58 — Section 3.3, par. 2: Replace "an more" by "a more" [RI]
  • Page 60 — "the command key": bad font (2 times) [RI]
  • Page 69 — Example 3.8: Indent first line [RI]
  • Page 70 — Example 3.10: Have a closing brace at end of class [RI]
  • Page 74 — Section 3.6: In "we can set up new subclasses of B without ever having to change A", replace "B" by "B'".
  • Page 81 — In the APPLESCRIPT URL, replace "/appescript/" with "/applescript/" [AZ]
  • Page 83 — Exercise 3.5: Replace "java.net.url" by "java.net.URL" (2 times) [RI]
  • Page 83 — Exercise 3.5: Replace "URLTest.java code" by "URLTest.java" [YW]

4 Reproducing Problems

  • Page 93 — Section 4.3.2: In "As a stream of events, a captured user interaction looks like that shown in Figure 3.4.", replace "Figure 3.4" by "Example 3.2". [YW]
  • Page 93 — Section 4.3.2: In "As a sequence of interactions with user controls, a captured user interaction looks like that shown in Figure 3.6.", replace "Figure 3.6" by "Example 3.4" [YW]
  • Page 100 — Figure 4.4: Bad font for "X"
  • Page 107 — Section 4.5.2: Replace "we have to overload" with "we have to overwrite" [AL]

5 Simplifying Problems


6 Scientific Debugging


7 Deducing Errors

  • Page 175 — Section 7.3.3: Replace "read by A" by "read by B" [RI]
  • Page 177 — Section 7.3.4: Replace "in the while body (Statement 4)" by "in the while body (Statement 5)" [RI]
  • Page 179 — Replace "A ->* B" by "A ->+ B". (A statement need not depend on itself.) [RI]
  • Page 182 — In "As an example, consider the CODESURFER screen shot shown in Example 7.2", replace "Example 7.2" by "Figure 7.5". [YW]
  • Page 184 — Replace "the -Wall option turns on all warnings" by "the -Wall option turns on most warnings". [RI]

8 Observing Facts

  • Page 240 — Example 8.4: Replace "_CONTAINER_H" by "MY_CONTAINER_H", as _CONTAINER_H is a reserved identifier. Same for Example 8.5. [RI]

9 Tracking Origins

  • Page 244 — Section 9.2: Replace "and then records its" with "and then records it" [AL]
  • Page 250 — Figure 9.5: Write "properties" correctly. [RI]

10 Asserting Expectations

  • Page 258 — Replace "(Figure 10.1a)" by "Figure 10.1". [YW]
  • Page 260 — In the assert definition, prefer "std::cerr" to "cerr". [RI]
  • Page 261 — Prefer "assert(x)" to "assert (x)"; later as well (Note usage of spaces.) [RI]
  • Page 268 — Replace "no more the" by "no more than the" [RI]
  • Page 273 — In "because the source code of P1 is not (or no longer) available," replace "P1" by "P0". [YW]
  • Page 274 — In the GUARD output, replace "polygon.java" by "Polygon.java" [RI]
  • Page 277 — Replace "sample-with-efence" by "./sample-with-efence"; may occur in other examples, too. [RI]
  • Page 280 — In "the caveats outlined in Figure 7.3", replace "Figure 7.3" by "List 7.3".

11 Detecting Anomalies

  • Page 299 — Replace "in line 8 m" by "in line 8, m" and use mathematical font for m. [RI]

12 Causes and Effects

  • Page 310 — In "V=16=1000 (in binary representation) holds", replace "1000" by "10000". [YZ]
  • Page 326 — Replace "As a failure is an effect of the cause." by "As a failure is an effect of the cause," [RI]
  • Page 327 — "A common context ... defines the search space for causes": Make this "A common context between actual worlds excludes causes from the search space." [MB]

13 Isolating Failure Causes

  • Page 332 — Section 13.2: In "whereas minimizing (Example 5.5) required 48 test.", replace "Example 5.5" by "Example 5.8". [YZ]
  • Page 337 — Example 13.2: Swap "some removal fails" and "some addition passes" [AL]
  • Page 354 — Exercise 13.4 replace "a actual" by "an actual" [RI]
  • Page 358 — Example 14.1: Use computer font. [RI]

14 Isolating Cause-Effect Chains

  • Page 363 — Figures 14.2 and 14.3: Have indices for variables "a" and "i", as in Table 14.1. [RI]
  • Page 363 — Section 14.2: In "The size edge, for instance, brings us to the location where the size value (3) is stored.", replace "(3)" by "(4)". [YW]
  • Page 370 — replace "causes propagates" by "causes propagate" [RI]
  • Page 375 — last paragraph: too much space after "cts" [RI]
  • Page 388 — Replace "what is correct nor not" by "what is correct or not" [AL]
  • Page 399 — Replace "1927" by "2027" and "2035" by "1935". Yes, we do have a Y2K problem :-) [RI]
  • Page 401 — Replace "when it as discovered training" by "when it as discovered — training". [RI]

15 Fixing the Defect

  • Page 405 — Exercise 15.6: Replace "It turns out that rather than summing up the elements from a[0] to a[n] it computes only the sum of a[0] to a[n - 1]." by "It turns out that rather than summing up the elements from a[0] to a[n - 1] it computes only the sum of a[0] to a[n - 2]." [YW]

Appendix: Formal Definitions

  • Page 407 — Definition A.3: Replace "CC" with "C". [RI]

Glossary

Bibliography

Index

Get the book at Amazon.com · Amazon.de
Comments? Write to Andreas Zeller <zeller@whyprogramsfail.com>.