
Why Programs Fail
A Guide to Systematic Debugging
Andreas Zeller(Author)
Morgan Kaufmann (Publisher)
2nd Edition
Published on 22. July 2009
Book
Paperback/Softback
544 pages
978-0-12-374515-6 (ISBN)
Description
Why Programs Fail: A Guide to Systematic Debugging is proof that debugging has graduated from a black art to a systematic discipline. It demystifies one of the toughest aspects of software programming, showing clearly how to discover what caused software failures, and fix them with minimal muss and fuss.
The fully updated second edition includes 100+ pages of new material, including new chapters on Verifying Code, Predicting Erors, and Preventing Errors. Cutting-edge tools such as FindBUGS and AGITAR are explained, techniques from integrated environments like Jazz.net are highlighted, and all-new demos with ESC/Java and Spec#, Eclipse and Mozilla are included.
This complete and pragmatic overview of debugging is authored by Andreas Zeller, the talented researcher who developed the GNU Data Display Debugger(DDD), a tool that over 250,000 professionals use to visualize the data structures of programs while they are running. Unlike other books on debugging, Zeller's text is product agnostic, appropriate for all programming languages and skill levels.
The book explains best practices ranging from systematically tracking error reports, to observing symptoms, reproducing errors, and correcting defects. It covers a wide range of tools and techniques from hands-on observation to fully automated diagnoses, and also explores the author's innovative techniques for isolating minimal input to reproduce an error and for tracking cause and effect through a program. It even includes instructions on how to create automated debugging tools.
The text includes exercises and extensive references for further study, and a companion website with source code for all examples and additional debugging resources is available.
The fully updated second edition includes 100+ pages of new material, including new chapters on Verifying Code, Predicting Erors, and Preventing Errors. Cutting-edge tools such as FindBUGS and AGITAR are explained, techniques from integrated environments like Jazz.net are highlighted, and all-new demos with ESC/Java and Spec#, Eclipse and Mozilla are included.
This complete and pragmatic overview of debugging is authored by Andreas Zeller, the talented researcher who developed the GNU Data Display Debugger(DDD), a tool that over 250,000 professionals use to visualize the data structures of programs while they are running. Unlike other books on debugging, Zeller's text is product agnostic, appropriate for all programming languages and skill levels.
The book explains best practices ranging from systematically tracking error reports, to observing symptoms, reproducing errors, and correcting defects. It covers a wide range of tools and techniques from hands-on observation to fully automated diagnoses, and also explores the author's innovative techniques for isolating minimal input to reproduce an error and for tracking cause and effect through a program. It even includes instructions on how to create automated debugging tools.
The text includes exercises and extensive references for further study, and a companion website with source code for all examples and additional debugging resources is available.
Reviews / Votes
Praise from the experts for the first edition:"In this book, Andreas Zeller does an excellent job introducing useful debugging techniques and tools invented in both academia and industry. The book is easy to read and actually very fun as well. It will not only help you discover a new perspective on debugging, but it will also teach you some fundamental static and dynamic program analysis techniques in plain language." --Miryung Kim, Software Developer, Motorola Korea
"Today every computer program written is also debugged, but debugging is not a widely studied or taught skill. Few books beyond this one present a systematic approach to finding and fixing programming errors." --James Larus, Microsoft Research
"From the author of ODD, the famous data display debugger, now comes the definitive book on debugging. Zeller's book is chock-full with advice, insight, and tools to track down defects in programs, for all levels of experience and any programming language. The book is lucidly written, explaining the principles of every technique without boring the reader with minutiae. And best of all, at the end of each chapter it tells you where to download all those fancy tools. A great book for the software professional as well as the student interested in the frontiers of automated debugging." --Walter F. Tichy, Professor, University Karlsruhe, Germany
"Andreas Zeller's Why Programs Fail lays an excellent foundation far practitioners, educators, and researchers alike. Using a disciplined approach based on the scientific method, Zeller provides deep insights, detailed approaches, and illustrative examples." --David Notkin, Professor Computer Science & Engineering, University of Washington
More details
Edition
2nd edition
Language
English
Place of publication
San Francisco
United States
Publishing group
Elsevier Science & Technology
Target group
Professional and scholarly
Computer programmers, software developers, analysts and testers
Illustrations
83 illustrations
Dimensions
Height: 231 mm
Width: 191 mm
Thickness: 23 mm
Weight
726 gr
ISBN-13
978-0-12-374515-6 (9780123745156)
Copyright in bibliographic data and cover images is held by Nielsen Book Services Limited or by the publishers or by their respective licensors: all rights reserved.
Schweitzer Classification
Other editions
Additional editions

E-Book
07/2009
2nd Edition
Morgan Kaufmann
€48.95
Available for download
Previous edition

Book
12/2005
Morgan Kaufmann
€75.70
Article exhausted; check for reprint
Person
Andreas Zeller is a full professor for Software Engineering at Saarland University in Saarbruecken, Germany. His research concerns the analysis of large software systems and their development process; his students are funded by companies like Google, Microsoft, or SAP. In 2010, Zeller was inducted as Fellow of the ACM for his contributions to automated debugging and mining software archives. In 2011, he received an ERC Advanced Grant, Europe's highest and most prestigious individual research grant, for work on specification mining and test case generation. His book "Why programs fail", the "standard reference on debugging", obtained the 2006 Software Development Jolt Productivity Award.
Content
1. How Failures Come to Be
2. Tracking Problems
3. Making Programs Fail
4. Reproducing Problems
5. Simplifying Problems
6. Scienti?c Debugging
7. Deducing Errors
8. Observing Facts
9. Tracking Origins
10. Asserting Expectations
11. Detecting Anomalies
12. Causes and E?ects
13. Isolating Failure Causes
14. Isolating Cause-E?ect Chains
15. Fixing the Defect
Appendix: Formal De?nitions
A.1 Delta Debugging
A.2 Memory Graphs
A.3 Cause-E?ect Chains
2. Tracking Problems
3. Making Programs Fail
4. Reproducing Problems
5. Simplifying Problems
6. Scienti?c Debugging
7. Deducing Errors
8. Observing Facts
9. Tracking Origins
10. Asserting Expectations
11. Detecting Anomalies
12. Causes and E?ects
13. Isolating Failure Causes
14. Isolating Cause-E?ect Chains
15. Fixing the Defect
Appendix: Formal De?nitions
A.1 Delta Debugging
A.2 Memory Graphs
A.3 Cause-E?ect Chains