Lisa Burnell, Alan Meadows, Patricia Bass and Keith Biggers, Texas Wesleyan University; John Priest, The University of Texas at Arlington
Debugging is hard. Each program bug brings its own particular problems, but there are usually three basic steps that a programmer must perform. These common steps are: (1) understanding something about the failure and the program being debugged, (2) finding the error in the program, and (3) correcting the error. Tools to assist in this process vary from providing virtually no assistance to intelligent debugging systems - tools that use knowledge about programs and program bugs. The purpose of all intelligent debugging systems is to narrow a software engineer’s focus to the program statements involved in a program failure, but existing systems vary in their efficiency, data requirements, and effectiveness. Using an approach that combines ideas from existing debugging systems, we present our work on a probabilistic intelligent debugging system for high-level languages. This system, called RAID (Run-time Analysis and Intelligent Debugging system), is an automated debugger for C programs. It uses probabilistic reasoning, heuristic debugging knowledge, and structural analyses to identify the most likely causes of a program failure.