Submission + - The Art of Debugging with GDB, DDD, and Eclipse
Diomidis Spinellis writes: "In common with programming, debugging is a skill we develop through experience. However, whereas we can become better programmers by studying algorithms, data structures, implementation patterns, style guides, APIs, and even existing open source code, there are few resources we can tap into to improve our debugging abilities. Matloff's and Salzman's book "The Art of Debugging with GDB, DDD, and Eclipse" fills this gap by presenting three powerful debugging tools, background knowledge, and essential techniques.
The three tools discussed in the book span the whole range of tool support for debugging. GDB is a command-line based tool, which is difficult to master, but can be extremely powerful. DDD provides a GUI front end to GDB, and can thus be a reasonable compromise between power and usability. Eclipse, as a full-featured IDE provides additional facilities that cover more software development activities.
The book starts with a discussion of debugging techniques, an overview of the tools, a comparison of their distinct interfaces, and a sample of a debugging session performed on each of them. This allows readers to decide which tool is most appropriate for them.
The book's main part covers in detail the facilities typically used for debugging programs: breakpoints, watchpoints, variable inspection, and examining a failed program's memory image (core dump). Each topic includes simple and more detailed examples covering GDB, DDD, and Eclipse. The text then moves on to more advanced topics: the debugging of threaded code, parallel applications, GUI programs, as well as debugger-specific quirks. Where required, the authors present the theory behind a particular behavior, such as a memory protection fault.
Somewhat paradoxically for a book whose title focuses on three specific tools, the text also covers other important debugging tools: the text editor, the compiler, C's error reporting, strace, ltrace, splint, and Electric Fence. Two additional tools this reviewer would have liked to see included in the presentation are valgrind and dtrace. The book ends with a discussion of how DDD, GDB, and Eclipse can be used to debug code written in Java, Perl, Python, SWIG, and assembly.
C programmers working on Unix systems will benefit most from reading this book, but many others can learn valuable techniques and tricks."
The three tools discussed in the book span the whole range of tool support for debugging. GDB is a command-line based tool, which is difficult to master, but can be extremely powerful. DDD provides a GUI front end to GDB, and can thus be a reasonable compromise between power and usability. Eclipse, as a full-featured IDE provides additional facilities that cover more software development activities.
The book starts with a discussion of debugging techniques, an overview of the tools, a comparison of their distinct interfaces, and a sample of a debugging session performed on each of them. This allows readers to decide which tool is most appropriate for them.
The book's main part covers in detail the facilities typically used for debugging programs: breakpoints, watchpoints, variable inspection, and examining a failed program's memory image (core dump). Each topic includes simple and more detailed examples covering GDB, DDD, and Eclipse. The text then moves on to more advanced topics: the debugging of threaded code, parallel applications, GUI programs, as well as debugger-specific quirks. Where required, the authors present the theory behind a particular behavior, such as a memory protection fault.
Somewhat paradoxically for a book whose title focuses on three specific tools, the text also covers other important debugging tools: the text editor, the compiler, C's error reporting, strace, ltrace, splint, and Electric Fence. Two additional tools this reviewer would have liked to see included in the presentation are valgrind and dtrace. The book ends with a discussion of how DDD, GDB, and Eclipse can be used to debug code written in Java, Perl, Python, SWIG, and assembly.
C programmers working on Unix systems will benefit most from reading this book, but many others can learn valuable techniques and tricks."