A Proposal for Sniffer: a System that Understands Bugs
This paper proposes an interactive debugging aid that exhibits a deep understanding of a narrow class of bugs. This system, called Sniffer, will be able to find and identify errors, and explain them in terms which are relevant to the programmer. Sniffer is knowledgeable about side-effects. It is capable of citing the data which was in effect at the time an error became manifest. The debugging knowledge in Sniffer is organized as a collection of independent experts which know about particular errors. The experts (sniffers) perform their function by applying a feature recognition process to the text for the program, and to the events which took place during the execution of the code. No deductive machinery is involved. The experts are supported by two systems; the cliche finder which identifies small portions of algorithms from a plan for the code, and the time rover which provides complete access to all program states that ever existed. Sniffer is embedded in a run-time debugging aid. The user of the system interacts with the debugger to focus attention onto a manageable subset of the code, and then submits a complaint to the sniffer system that describes the behavior which was desired. Sniffer outputs a detailed report about any error which is discovered.