Includes bibliographical references (pages 477-479) and index
What This Book Is about -- Why Care about Bugs? -- What Is a Bug? -- Who Is This Book for? -- A Brief History of Debugging -- Case Studies of Famous (and Not So Famous) Bugs -- Bug Puzzle -- What Are Bugs? -- Why Worry about Bugs? -- The Nature of Bugs -- Life Cycle of a Bug -- Why Are Bugs Created? -- How Are Bugs Created? -- How Do Bugs Slip through Testing? -- A Bug Taxonomy -- Classes of Bugs -- Severity -- The Bug Taxonomy -- The Bug Classes -- Why Is Classification Important? -- Detective Work -- Holistic Debugging -- Debugging Methods -- Tricks of the Trade -- Reproducible Cases -- Debugging Tools and When to Use Them -- Testing and Debugging Environments -- Middle Level Debugging Techniques -- The General Process of Debugging -- Identify the Problem -- Gather Information -- Form a Hypothesis -- Test Your Hypothesis -- The Case of the Crashing Web Server -- Iterate until a Proven Hypothesis Is Found -- Propose a Solution -- Test the Solution -- Iterate until Solution Is Proven -- Regression Test -- Debugging Techniques -- Intrusive vs. Non-intrusive Debugging -- Short-Term vs. Long-Term Debugging Techniques -- Compromises for Production Environments -- The Techniques -- Debugging Different Application Types -- Small-Scale Standalone Applications -- Mid-Size Standalone Applications -- Mid-Size Client/Server Applications -- Large-Scale Applications -- Real-Time Systems -- Embedded Systems -- Distributed Systems -- Simulated Systems -- Post Debugging -- Did I Make the Same Mistake Elsewhere? -- What's Hiding Behind This Bug? -- How Can I Prevent this Bug? -- How Can I Make this Kind of Bug Easier to Find? -- Am I Getting Better? -- Prebugging -- What Is Prebugging? -- General Techniques -- Prebugging in Requirement -- Prebugging in Design -- Prebugging in Implementation -- Testing -- Unit Testing -- Verification Testing -- Quality Assurance Testing -- Testing Methods -- Maintenance -- What Is Software Maintenance? -- Creating a Maintainable Software System -- Maintaining Existing Software -- When Do You Give Up? -- Debugging as a Profession -- Learning to Be a Debugger -- Where Can Professional Debuggers Be Used? -- Traits of a Good Professional Debugger -- A Day in the Life