2007 Mid-Atlantic Student Workshop on Programming Languages and Systems
In cooperation with ACM SIGPLAN
Supported, in part, by IBM and Microsoft Research
Keynote Abstract
Debugging software is an expensive and mostly manual process. Of all
debugging activities, locating the faults, or fault localization, is
the most expensive. To reduce the time required to locate
faults, and thus the expense of debugging, we have developed techniques
to automate the process of searching for faults. In this talk, I will
present these techniques. First, I will present our general technique
that uses information about the execution of a set of test cases--some
passing and some failing--to rank parts of the program, such as statements,
according to their suspiciousness of being faulty. Next, I will discuss
our technique that uses similarities among test cases to cluster the
test cases and create specialized test suites that can be used to
more efficiently find individual faults and perform the fault-localization
of multiple faults in parallel. Finally, I will present the results of
two empirical studies. One study evaluates our general technique and
shows that it outperforms other techniques that have the same goal.
The other study demonstrates that our specialized test suites can reduce
the time to find faults and provide an effective way to perform the
fault localization in parallel.