Our Book

The Developer’s Guide to Debugging, 2nd Edition

T. Grötker, U. Holtmann, H. Keding, M. Wloka, Createspace, Kindle, 2012

Amazon.com Amazon.de Kindle Ebook

Contents:
1. You Write Software: You have Bugs
2. A Systematic Approach to Debugging
3. Source Code Debuggers
4. Fixing Memory Problems
5. Profiling Memory Use
6. Solving Performance Problems
7. Debugging Parallel Programs
8. Finding Environment and Compiler Problems
9. Dealing with Linking Problems
10. Advanced Debugging
11. Writing Debuggable Code
12. How Static Checking Can Help

The Developer’s Guide to Debugging is a book for both professional software developers seeking to broaden their skills, and students that want to learn the skills of the trade from the ground up. Containing short examples and exercises, it is well suited to accompany a computer science course or lecture. At the same time it can be used as a practical reference guide for finding bugs.

This book goes beyond the level of simple source code debugging. It covers the most frequent real-world debugging scenarios, from the areas of program linking, memory access, parallel processing, and performance analysis. The book is completed by chapters on how to use static checkers and how to write code that leans well towards debugging.

While the book’s focus lies on C and C++, the workhorses of the software industry, one can apply many techniques described in The Developer’s Guide to Debugging to programs written in other languages.

Reviews – Laurent Michel writes: “This book is unique in many respects. First, there is no other book I know of that covers the topic of program debugging…”
Read more in Reviews…


Examples

Here are the source code examples from our book:


Errata in 2012 2nd Edition, Createspace and Kindle

Errata list for “The Developer’s Guide to Debugging”, 2nd Edition, Feb 2012.

If you find a bug in our book, please email us at authors@debugging-guide.com, so we can fix it in the next edition.

Chapter 3

p.32: remove the editing comment “Change…”

Chapter 5

Change the Massif screen dumps to color, to improve readability.
Reported 5/06/12 by Markus Wloka


Errata in 2008 1st Edition

Errata list for “The Developer’s Guide to Debugging”, 1st Edition, Aug. 2008.

Chapter 4

p.43, first paragraph
Change “There is three common …” to “There are three common …”
Reported 9/17/08 by Christos Kontas

Chapter 7

p.91, section 7.2.2 log file code example beancounter.c
line 7, 10 Add (int) cast
line 12/13 Add return beans_arg;
Reported 8/29/08 by Markus Wloka

p.93 last paragraph.
Change “This is can be done …” to “This can be done …”
Reported 9/17/08 by Christos Kontas

p.94 last paragraph of 7.3
Change “Starting the program in a debugger will gets you …” to “Starting the program in a debugger will get you …”
Reported 9/17/08 by Christos Kontas

p.96 3rd paragraph of 7.4
Change “still in a experimental, but …” to “still in an experimental, but …
Reported 9/17/08 by Christos Kontas

Chapter 9

p.110, section 9.2, example. factorial.h is missing
Reported 12/29/08 by Jan Koslasz

p.121, section 9.6.4 code example test_file.cc line 9
Change delete a[]; to delete [] a;
Reported 8/29/08 by Markus Wloka

Chapter 10

p.140, section 10.5.1. Code example MyCLass.h, line 4.
Change MyClass::MyClass() { to MyClass() {
Reported 8/29/08 by Markus Wloka

p.160 2nd paragraph
Change “and by adding a new argument and between…” to “and by adding a new argument “and” between…”
Reported 9/17/08 by Christos Kontas

p.161 2nd paragraph
Change “Of course, It is also easy to corrupt …” to “Of course, it is also easy to corrupt …”
Reported 9/17/08 by Christos Kontas

Chapter 11

p.170, section 11.1.1.
Change “line brakes” to “line breaks”
Reported 12/29/08 by Jan Koslasz

Chapter 12

p.185, section 12.1.1. Compile command for myfile.cpp
Change > gcc -Wall myfile.cpp to > g++ -Wall myfile.cpp
Reported 8/29/08 by Markus Wloka

p.188 2nd paragraph
Change “Sometimes, execution it is no longer intended …” to “Sometimes, execution is no longer intended …”
Reported 9/17/08 by Christos Kontas

Appendix B

p.198, section B.3.1 Cygwin
Change “GDB, gprof, and Valgrind” to “GDB and gprof. Unfortunately, Valgrind is not part of Cygwin.” (17.02.11: Check this one)
Reported 11/28/08 by Markus Wloka