Troubleshooting.

Nine rules of debugging are:rW6

  1. Understand the system: read about it, learn its tools.
  2. Make it fail: identify success and failure cases, look for patterns in intermittent failures, record all of the steps.
  3. Quit thinking and look: only guessing should be about where to add more visibility.
  4. Divide and conquer: cut down the problem space progressively, zooming into the cause.
  5. Change one thing at a time: don’t fix until the cause is clear, try comparing the current state to the last known good state.
  6. Keep and audit trail: write all changes down, assess for cause and effect.
  7. Check the plug: start at the beginning, identify and verify all assumptions.
  8. Get a fresh view: rubber duck, talk to experts, listen to experience, discuss symptoms rather than conclusions.
  9. If you didn’t fix it, it ain’t fixed: verify fixes truly work, know that things can’t just start working, find the root causes.

  1. David Wheeler, “David A. Wheeler’s Review of ‘Debugging’ by David J. Agans,” March 2, 2004, https://dwheeler.com/essays/debugging-agans.html. (See notes.)