Debugging by thinking a multidisciplinary approach - Metzger, Robert C. (Boston : Elsevier Digital Press, 2004)
Debugging by Thinking: A Multi-Disciplinary Approach is the first book to apply the wisdom of six disciplineslogic, mathematics, psychology, safety analysis, computer science, and engineeringto the problem of debugging. It uses the methods of literary detectives such as Sherlock Holmes, the techniques of mathematical problem solving, the results of research into the cognitive psychology of human error, the root cause analyses of safety experts, the compiler analyses of computer science, and the processes of modern engineering to define a systematic approach to identifying and correcting software errors. * Language Independent Methods: Examples are given in Java and C++ * Complete source code shows actual bugs, rather than contrived examples * Examples are accessible with no more knowledge than a course in Data Structures and Algorithms requires * A "thought process diary" shows how the author actually resolved the problems as they occurred.
Cover -- Debugging by Thinking: A Multidisciplinary Approach -- Copyright Page -- Contents -- Preface -- Why I Wrote This Book -- Who Should Read This Book -- How to Read This Book -- Typographical and Grammatical Conventions -- Acknowledgments -- Permissions -- Chapter 1. Introduction -- 1.1 The nature of the problem -- 1.2 The six ways of thinking -- 1.3 The two eras of software engineering -- 1.4 Debugging and development methodologies -- 1.5 Review -- Chapter 2. Sherlock Holmes -- 2.1 Preview -- 2.2 Worldview of the detective -- 2.3 Detective fiction -- 2.4 The character of Sherlock Holmes -- 2.5 The methods of Sherlock Holmes -- 2.6 Review -- Chapter 3. Lord Peter Wimsey -- 3.1 Preview -- 3.2 The character of Lord Peter Wimsey -- 3.3 The methods of Lord Peter Wimsey -- 3.4 Review -- Chapter 4. Professor Solomon -- 4.1 Preview -- 4.2 The methods of Professor Solomon -- 4.3 Review -- Chapter 5. Case Studies I -- 5.1 Case Study I -- Chapter 6. Mathematical Problem Solving -- 6.1 Preview -- 6.2 Worldview of the mathematician -- 6.3 Polya and mathematical heuristics -- 6.4 Mathematical proof texts -- 6.5 Schoenfeld and mathematical problem solving -- 6.6 Applying Schoenfeld to debugging -- 6.7 Review -- Chapter 7. Debugging Strategies -- 7.1 Preview -- 7.2 Evaluation mechanisms -- 7.3 Binary search strategy -- 7.4 Greedy search strategy -- 7.5 Breadth-first search strategy -- 7.6 Depth-first search strategy -- 7.7 Program slice strategy -- 7.8 Deductive-analysis strategy -- 7.9 Inductive-analysis strategy -- 7.10 Choosing a strategy -- 7.11 Review -- Chapter 8. Debugging Heuristics -- 8.1 Preview -- 8.2 Stabilize the program -- 8.3 Create a test case -- 8.4 Reduce the required input -- 8.5 Categorize the problem -- 8.6 Describe the problem -- 8.7 Explain the problem to someone else -- 8.8 Recall a similar problem -- 8.9 Draw a diagram -- 8.10 Choose a hypothesis from historical data -- 8.11 Review -- Chapter 9. Debugging Tactics -- 9.1 Preview -- 9.2 Read the source code -- 9.3 Write a unit test -- 9.4 Display variable values -- 9.5 Display execution messages -- 9.6 Display procedure arguments -- 9.7 Generate a flow trace -- 9.8 Generate a variable snapshot -- 9.9 Generate memory dump -- 9.10 Force variable value -- 9.11 Assert assumptions -- 9.12 Check data structures -- 9.13 Display data structures -- 9.14 Use runtime subscript checking -- 9.15 Use runtime stack checking -- 9.16 Use runtime heap checking -- 9.17 Initialize global variables -- 9.18 Initialize local variables -- 9.19 Change storage class -- 9.20 Use a different compiler -- 9.21 Compile to assembly code -- 9.22 Execute on a different platform -- 9.23 Review -- Chapter 10. Case Studies II -- 10.1 Case Study 2 -- 10.2 Case Study 3 -- Chapter 11. The Way of the Safety Expert --T$107.
Title from title screen.
Title from book cover on Web Page (viewed Dec. 23, 2005).
Includes bibliographical references and index.
Keywords: Debugging in computer science; Electronic books