Here are a few basic rules of troubleshooting and debugging.
- Divide and conquer (always)
- 50/50 tests are best
- Verify can’t happen cases with a test
- Steady progress is better than random guessing
- If you guess and fail, go back to #1. Don’t try to keep guessing.
I’ve been trying to formulate a good set of troubleshooting and debugging rules for years. Ever since I was training entry-level programmers and realized that I couldn’t always explain how I found a problem or spotted a bug.