Why Programs Fail: A Guide to Systematic Debugging

Front Cover
Morgan Kaufmann, 2006 - Computers - 448 pages
Debugging has undergone a sea change in recent years. Increasing processing power has allowed for the creation of much more sophisticated software tools for the analysis and debugging of programs. This in turn has allowed debugging to graduate from a black art to a systematic discipline. The time is right to summarize this new advanced approach to debugging. Why Programs Fail is about bugs in computer programs, how to reproduce them, how to find them, and how to fix them in such a way that they do not occur anymore. This is the first comprehensive book on systematic debugging and covers a wide range of tools and techniques ranging from hands-on observation to fully automated diagnoses, and includes instructions for building automated debuggers. This discussion is built upon a solid theory of how failures occur, rather than relying on seat-of-the-pants techniques, which are of little help with large software systems or to those learning to program. Andreas Zeller is well known in the programming community for developing the GNU Data Display Debugger (DDD), a tool that visualizes the data structures of a program while it is running. Over 250,000 users as well as all major software companies use DDD for software development. Zeller is also the creator of the popular "Ask Igor" website that will automatically debug programs over the web, and he regularly speaks and consults in the USA.

What people are saying - Write a review

We haven't found any reviews in the usual places.


1 How Failures Come to Be
2 Tracking Problems
3 Making Programs Fail
4 Reproducing Problems
5 Simplifying Problems
6 Scientific Debugging
7 Deducing Errors
8 Observing Facts
11 Detecting Anomalies
12 Causes and Effects
13 Isolating Failure Causes
14 Isolating CauseEffect Chains
15 Fixing the Defect
Appendix Formal Definitions

9 Tracking Origins
10 Asserting Expectations

Other editions - View all

Common terms and phrases

About the author (2006)

Andreas Zeller is a computer science professor at Saarland University, Germany. His research centers on programmer productivity: What can be done to ease the life and work of programmers? Among Linux and Unix programmers Zeller is best known for GNU DDD, a debugger front-end with built-in data visualization. Among academics and advanced professionals, Zeller is best known for delta debugging, a technique that automatically isolates failure causes for computer programs. His work is equally divided between teaching, reading, writing, programming, and flying back and forth across the Atlantic. He lives with his family in Saarbrücken, on the German border with France.

Bibliographic information