DebugIt.pdf
I The Heart of the Problem 13 1 A Method in the Madness 14 1.1 Debugging Is More Than “Making the Bug Go Away” . 14 1.2 The Empirical Approach . . . . . . . . . . . . . . . . . . 16 1.3 The Core Debugging Process . . . . . . . . . . . . . . . 17 1.4 First Things First . . . . . . . . . . . . . . . . . . . . . . 18 1.5 Put It in Action . . . . . . . . . . . . . . . . . . . . . . . 22 2 Reproduce 23 2.1 Reproduce First, Ask Questions Later . . . . . . . . . . 23 2.2 Controlling the Software . . . . . . . . . . . . . . . . . . 25 2.3 Controlling the Environment . . . . . . . . . . . . . . . 26 2.4 Controlling Inputs . . . . . . . . . . . . . . . . . . . . . 28 2.5 Refining Your Reproduction . . . . . . . . . . . . . . . . 36 2.6 What If You Really Can’t Reproduce It? . . . . . . . . . 45 2.7 Put It in Action . . . . . . . . . . . . . . . . . . . . . . . 48 3 Diagnose 49 3.1 Stand Back—I’m Going to Try Science . . . . . . . . . . 49 3.2 Stratagems . . . . . . . . . . . . . . . . . . . . . . . . . . 56 3.3 Debuggers . . . . . . . . . . . . . . . . . . . . . . . . . . 62 3.4 Pitfalls . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 3.5 Mind Games . . . . . . . . . . . . . . . . . . . . . . . . . 67 3.6 Validate Your Diagnosis . . . . . . . . . . . . . . . . . . 72 3.7 Put It in Action . . . . . . . . . . . . . . . . . . . . . . . 73 Download at WoweBook.Com CONTENTS 8 4 Fix 74 4.1 Clearing the Decks . . . . . . . . . . . . . . . . . . . . . 75 4.2 Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4.3 Fix the Cause, Not the Symptoms . . . . . . . . . . . . 78 4.4 Refactoring . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.5 Checking In . . . . . . . . . . . . . . . . . . . . . . . . . 82 4.6 Get Your Code Reviewed . . . . . . . . . . . . . . . . . . 83 4.7 Put It in Action . . . . . . . . . . . . . . . . . . . . . . . 84 5 Reflect 85 5.1 How Did It Ever Work? . . . . . . . . . . . . . . . . . . . 85 5.2 What Went Wrong? . . . . . . . . . . . . . . . . . . . . . 86 5.3 It’ll Never Happen Again . . . . . . . . . . . . . . . . . . 89 5.4 Close the Loop . . . . . . . . . . . . . . . . . . . . . . . . 92 5.5 Put It in Action . . . . . . . . . . . . . . . . . . . . . . . 93 II The Bigger Picture 94 6 Discovering That You Have a Problem 95 6.1 Tracking Bugs . . . . . . . . . . . . . . . . . . . . . . . . 95 6.2 Working with Users . . . . . . . . . . . . . . . . . . . . . 100 6.3 Working with Support Staff . . . . . . . . . . . . . . . . 105 6.4 Put It in Action . . . . . . . . . . . . . . . . . . . . . . . 107 7 Pragmatic Zero Tolerance 108 7.1 Bugs Take Priority . . . . . . . . . . . . . . . . . . . . . 108 7.2 The Debugging Mind-Set . . . . . . . . . . . . . . . . . . 111 7.3 Digging Yourself Out of a Quality Hole . . . . . . . . . . 113 7.4 Put It in Action . . . . . . . . . . . . . . . . . . . . . . . 118 III Debug-Fu 119 8 Special Cases 120 8.1 Patching Existing Releases . . . . . . . . . . . . . . . . 120 8.2 Backward Compatibility . . . . . . . . . . . . . . . . . . 121 8.3 Concurrency . . . . . . . . . . . . . . . . . . . . . . . . . 126 8.4 Heisenbugs . . . . . . . . . . . . . . . . . . . . . . . . . 128 8.5 Performance Bugs . . . . . . . . . . . . . . . . . . . . . 130 8.6 Embedded Software . . . . . . . . . . . . . . . . . . . . . 132 8.7 Bugs in Third-Party Software . . . . . . . . . . . . . . . 135 8.8 Put It in Action . . . . . . . . . . . . . . . . . . . . . . . 140 Download at WoweBook.Com CONTENTS 9 9 The Ideal Debugging Environment 141 9.1 Automated Testing . . . . . . . . . . . . . . . . . . . . . 141 9.2 Source Control . . . . . . . . . . . . . . . . . . . . . . . 144 9.3 Automatic Builds . . . . . . . . . . . . . . . . . . . . . . 149 9.4 Put It in Action . . . . . . . . . . . . . . . . . . . . . . . 157 10 Teach Your Software to Debug Itself 158 10.1 Assumptions and Assertions . . . . . . . . . . . . . . . 158 10.2 Debugging Builds . . . . . . . . . . . . . . . . . . . . . . 168 10.3 Resource Leaks and Exception Handling . . . . . . . . 173 10.4 Put It in Action . . . . . . . . . . . . . . . . . . . . . . . 180 11 Anti-patterns 181 11.1 Priority Inflation . . . . . . . . . . . . . . . . . . . . . . . 181 11.2 Prima Donna . . . . . . . . . . . . . . . . . . . . . . . . . 182 11.3 Maintenance Team . . . . . . . . . . . . . . . . . . . . . 184 11.4 Firefighting . . . . . . . . . . . . . . . . . . . . . . . . . . 186 11.5 Rewrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 11.6 No Code Ownership . . . . . . . . . . . . . . . . . . . . . 189 11.7 Black Magic . . . . . . . . . . . . . . . . . . . . . . . . . 189 11.8 Put It in Action . . . . . . . . . . . . . . . . . . . . . . . 190
剩余215页未读,继续阅读
- 粉丝: 9
- 资源: 40
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助