Effective Debugging : 66 Specific Ways to Debug Software and Systems (Effective Software Development)

個数:

Effective Debugging : 66 Specific Ways to Debug Software and Systems (Effective Software Development)

  • 在庫がございません。海外の書籍取次会社を通じて出版社等からお取り寄せいたします。
    通常6~9週間ほどで発送の見込みですが、商品によってはさらに時間がかかることもございます。
    重要ご説明事項
    1. 納期遅延や、ご入手不能となる場合がございます。
    2. 複数冊ご注文の場合、分割発送となる場合がございます。
    3. 美品のご指定は承りかねます。
  • 【重要:入荷遅延について】
    各国での新型コロナウィルス感染拡大により、洋書・洋古書の入荷が不安定になっています。
    海外からのお取り寄せの場合、弊社サイト内で表示している標準的な納期よりもお届けまでに日数がかかる見込みでございます。
    申し訳ございませんが、あらかじめご了承くださいますようお願い申し上げます。

  • 製本 Paperback:紙装版/ペーパーバック版/ページ数 227 p.
  • 言語 ENG
  • 商品コード 9780134394794
  • DDC分類 005

Full Description


Every software developer and IT professional understands the crucial importance of effective debugging. Often, debugging consumes most of a developer's workday, and mastering the required techniques and skills can take a lifetime. In Effective Debugging, Diomidis Spinellis helps experienced programmers accelerate their journey to mastery, by systematically categorizing, explaining, and illustrating the most useful debugging methods, strategies, techniques, and tools.Drawing on more than thirty-five years of experience, Spinellis expands your arsenal of debugging techniques, helping you choose the best approaches for each challenge. He presents vendor-neutral, example-rich advice on general principles, high-level strategies, concrete techniques, high-efficiency tools, creative tricks, and the behavioral traits associated with effective debugging.Spinellis's 66 expert techniques address every facet of debugging and are illustrated with step-by-step instructions and actual code. He addresses the full spectrum of problems that can arise in modern software systems, especially problems caused by complex interactions among components and services running on hosts scattered around the planet. Whether you're debugging isolated runtime errors or catastrophic enterprise system failures, this guide will help you get the job done-more quickly, and with less pain.Key features includeHigh-level strategies and methods for addressing diverse software failuresSpecific techniques to apply when programming, compiling, and running codeBetter ways to make the most of your debuggerGeneral-purpose skills and tools worth investing inAdvanced ideas and techniques for escaping dead-ends and the maze of complexityAdvice for making programs easier to debugSpecialized approaches for debugging multithreaded, asynchronous, and embedded codeBug avoidance through improved software design, construction, and management

Table of Contents

Figures                                    xi
Listings xiii
Preface xv
Acknowledgments xxiii
About the Author xxviii
Chapter 1 High-Level Strategies 1 (22)
Item 1 Handle All Problems through an 1 (2)
Issue-Tracking System
Item 2 Use Focused Queries to Search the 3 (2)
Web for Insights into Your Problem
Item 3 Confirm That Preconditions and 5 (2)
Postconditions Are Satisfied
Item 4 Drill Up from the Problem to the 7 (2)
Bug or Down from the Program's Start to
the Bug
Item 5 Find the Difference between a 9 (3)
Known Good System and a Failing One
Item 6 Use the Software's Debugging 12 (5)
Facilities
Item 7 Diversify Your Build and Execution 17 (3)
Environment
Item 8 Focus Your Work on the Most 20 (3)
Important Problems
Chapter 2 General-Purpose Methods and 23 (26)
Practices
Item 9 Set Yourself Up for Debugging 23 (2)
Success
Item 10 Enable the Efficient Reproduction 25 (3)
of the Problem
Item 11 Minimize the Turnaround Time from 28 (1)
Your Changes to Their Result
Item 12 Automate Complex Testing Scenarios 29 (3)
Item 13 Enable a Comprehensive Overview 32 (1)
of Your Debugging Data
Item 14 Consider Updating Your Software 33 (1)
Item 15 Consult Third-Party Source Code 34 (2)
for Insights on Its Use
Item 16 Use Specialized Monitoring and 36 (4)
Test Equipment
Item 17 Increase the Prominence of a 40 (2)
Failure's Effects
Item 18 Enable the Debugging of Unwieldy 42 (2)
Systems from Your Desk
Item 19 Automate Debugging Tasks 44 (1)
Item 20 Houseclean Before and After 45 (1)
Debugging
Item 21 Fix All Instances of a Problem 46 (3)
Class
Chapter 3 General-Purpose Tools and 49 (22)
Techniques
Item 22 Analyze Debug Data with Unix 49 (6)
Command-Line Tools
Item 23 Utilize Command-Line Tool Options 55 (2)
and Idioms
Item 24 Explore Debug Data with Your 57 (2)
Editor
Item 25 Optimize Your Work Environment 59 (5)
Item 26 Hunt the Causes and History of 64 (3)
Bugs with the Revision Control System
Item 27 Use Monitoring Tools on Systems 67 (4)
Composed of Independent Processes
Chapter 4 Debugger Techniques 71 (30)
Item 28 Use Code Compiled for Symbolic 71 (5)
Debugging
Item 29 Step through the Code 76 (1)
Item 30 Use Code and Data Breakpoints 77 (3)
Item 31 Familiarize Yourself with Reverse 80 (2)
Debugging
Item 32 Navigate along the Calls between 82 (2)
Routines
Item 33 Look for Errors by Examining the 84 (3)
Values of Variables and Expressions
Item 34 Know How to Attach a Debugger to 87 (2)
a Running Process
Item 35 Know How to Work with Core Dumps 89 (3)
Item 36 Tune Your Debugging Tools 92 (3)
Item 37 Know How to View Assembly Code 95 (6)
and Raw Memory
Chapter 5 Programming Techniques 101 (32)
Item 38 Review and Manually Execute 101 (2)
Suspect Code
Item 39 Go Over Your Code and Reasoning 103 (1)
with a Colleague
Item 40 Add Debugging Functionality 104 (4)
Item 41 Add Logging Statements 108 (4)
Item 42 Use Unit Tests 112 (4)
Item 43 Use Assertions 116 (3)
Item 44 Verify Your Reasoning by 119 (1)
Perturbing the Debugged Program
Item 45 Minimize the Differences between 120 (1)
a Working Example and the Failing Code
Item 46 Simplify the Suspect Code 121 (3)
Item 47 Consider Rewriting the Suspect 124 (2)
Code in Another Language
Item 48 Improve the Suspect Code's 126 (3)
Readability and Structure
Item 49 Fix the Bug's Cause, Rather Than 129 (4)
Its Symptom
Chapter 6 Compile-Time Techniques 133 (16)
Item 50 Examine Generated Code 133 (3)
Item 51 Use Static Program Analysis 136 (5)
Item 52 Configure Deterministic Builds 141 (2)
and Executions
Item 53 Configure the Use of Debugging 143 (6)
Libraries and Checks
Chapter 7 Runtime Techniques 149 (22)
Item 54 Find the Fault by Constructing a 149 (4)
Test Case
Item 55 Fail Fast 153 (1)
Item 56 Examine Application Log Files 154 (4)
Item 57 Profile the Operation of Systems 158 (4)
and Processes
Item 58 Trace the Code's Execution 162 (6)
Item 59 Use Dynamic Program Analysis Tools 168 (3)
Chapter 8 Debugging Multi-threaded Code 171 (36)
Item 60 Analyze Deadlocks with Postmortem 171 (7)
Debugging
Item 61 Capture and Replicate 178 (5)
Item 62 Uncover Deadlocks and Race 183 (5)
Conditions with Specialized Tools
Item 63 Isolate and Remove Nondeterminism 188 (2)
Item 64 Investigate Scalability Issues by 190 (3)
Looking at Contention
Item 65 Locate False Sharing by Using 193 (4)
Performance Counters
Item 66 Consider Rewriting the Code Using 197 (10)
Higher-Level Abstractions
Web Resources 207 (4)
Index 211