Why Programs Fail: A Guide to Systematic DebuggingDebugging 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.
Contents
1 How Failures Come to Be | 1 |
2 Tracking Problems | 27 |
3 Making Programs Fail | 53 |
4 Reproducing Problems | 85 |
5 Simplifying Problems | 117 |
6 Scientific Debugging | 145 |
7 Deducing Errors | 167 |
8 Observing Facts | 199 |
11 Detecting Anomalies | 295 |
12 Causes and Effects | 317 |
13 Isolating Failure Causes | 331 |
14 Isolating CauseEffect Chains | 357 |
15 Fixing the Defect | 387 |
Appendix Formal Definitions | 407 |
Glossary | 423 |
429 | |
Other editions - View all
Common terms and phrases
abstract actual cause alternate world APPLESCRIPT apply argc aspect assertions automatically backtrace backward slice behavior bigbang breakpoint called cause transitions cause-effect chain causes the failure changes Chapter code smells compiler configuration control flow graph correct crash DAIKON database ddmin defect delta debugging dependences Detecting Anomalies difference dynamic slice effect environment error failing run failure-inducing Figure FINDBUGS function Heisenbug hypothesis infection chain input instance invariants invoked JAVA JUNIT layer LOG4J logging longer occurs machine malloc memory graph mock object model-view-controller MOZILLA observation origins output pointer postconditions printf problem report problem-tracking system program code program execution program run query relevant replay reproduce the problem result sane scientific method script SELECT NAME="priority shell_sort shown in Example simplify source code specific statement STRACE subset techniques tion track typically VALGRIND vertex Zeller