I have found it! (in Greek, “Heurisko!”)
—Archimedes
This chapter presents the definitions of debugging heuristics, with examples of using each to find actual bugs. It explains that debugging heuristics don’t lend themselves to easy categorization, as is the case with strategies and tactics. It notes that many debugging heuristics are similar to the mathematical heuristics described in Polya’s book.
We have identified the following debugging heuristics:
Modify the program so that you can repeat the problem at will.
Create a test case that will demonstrate the problem when desired.
Reduce the input required to reproduce the problem.
Categorize the problem according to a standard set of questions.
Describe the problem according to a standard methodology.
Explain the problem to someone else.
Recall a similar problem from the past.
Draw a diagram.
Choose a hypothesis from historical data.