Home About News Contact
 

Debugging : The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems

Overview

Title Debugging
Author David J. Agans
Published October 2002 by AMACOM (www.amacombooks.org)
ISBN 0-8144-7168-4
Pages 192
Category software development, quality
User Level beginner to intermediate
Reviewer Anthon Pang
Rating 5 / 5

Synopsis

In "Debugging", David Agans presents the nine fundamental rules to fixing bugs. Devoting a chapter to each rule, Agans explains the rationale for each rule through case studies (a.k.a. war stories). Applying the techniques described is not limited to hardware and software problems.

Table of Contents

Chapter 1. Introduction
Chapter 2. The Rules -- Suitable for Framing
Chapter 3. Understand the System
Chapter 4. Make It Fail
Chapter 5. Quit Thinking and Look
Chapter 6. Divide and Conquer
Chapter 7. Change One Thing at a Time
Chapter 8. Keep an Audit Trail
Chapter 9. Check the Plug
Chapter 10. Get a Fresh View
Chapter 11. If You Didn't Fix It, It Ain't Fixed
Chapter 12. All the Rules in One Story
Chapter 13. Easy Exercises for the Reader
Chapter 14. The View from the Help Desk
Chapter 15. The Bottom Line

Praises

Well-organized and entertaining, "Debugging" will remind the novice and the master alike of the basic principles to debugging.

The rules (with my comments enclosed by brackets):

  1. Understand The System. [Have a detailed understanding of how the system is supposed to work.]
  2. Make It Fail. [If you can't reproduce the problem, how will you know when it's really fixed?]
  3. Quit Thinking and Look. [Akin to analysis paralysis, at some point you have to get your hands dirty.]
  4. Divide and Conquer. [Isolate the source of the problem.]
  5. Change One Thing at a Time. [Take small steps. Also, be wary of introducing latent side-effects and new bugs.]
  6. Keep an Audit Trail. [Show your work. What did you do and what were the results?]
  7. Check the Plug. [Fix it well. Don't trust your assumptions.]
  8. Get a Fresh View. [Don't be afraid to ask for help. When stuck on a problem, it also helps to take a break and come back to it later.]
  9. If You Didn't Fix It, It Ain't Fixed. [Check your work. Verify the fix corrects the problem.]

The author encourages readers to download and print the "Debugging Rules" poster from his web site.

Criticisms

A minor nitpick: absent from the discussion is how debugging (as a skill) can be, and is, taught. Debugging isn't an innate skill -- it is acquired. For example, you may have first internalized a subset of the rules to solve math problems in school. Experiential learning (i.e., fixing your bugs or someone else's) and adapting the rules to other contexts (i.e., patterns) further increased your debugging proficiency.

Summary

The rules might sound pithy, but overall, "Debugging" delivers. Rest assured, if I'm ever called upon again to "teach" debugging, I'll readily recommend that they start with this book.

Professional debuggers may be a little dismayed to see their prized skill codified and reduced to nine short rules. But as the author cautions readers, while the rules may be obvious, they are non-trivial and are often forgotten "in the heat of battle". (Agans, 2)

Copyright

Copyright © 2003 Anthon Pang.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".