Practical runtime identification of program errors
With the growing use of computers in almost every aspect of our lives, software failures have greater impact than ever before. With the growing size and complexity of software, debugging has become a more and more formidable task. In this thesis, we present two novel techniques for software debugging. The first technique, Argus, is the first online statistical bug detection technique that we know of. Argus can detect many hard-to-find bugs, including semantic bugs. Argus surpasses previously known statistical debugging techniques (offline statistical bug isolation/localization techniques) in that it eliminates the requirements for multiple execution traces and labeling of the traces as passing or failing. Moreover, Argus can sound an alarm when bug symptoms occur during execution, which allows users to have a prompt response to possible consequences caused by software failure. ^ The second technique, Artemis, is the first technique that uses a program's execution context information to perform selective monitoring. Artemis can dramatically reduce the runtime overhead of existing dynamic debugging techniques. Artemis is implemented as a compiler-based instrumentation framework that complements many pre-existing runtime monitoring techniques. The Artemis framework guides baseline monitoring techniques toward regions of the program where bugs are likely to occur, yielding a low asymptotic monitoring overhead. Our experiments show that Artemis' asymptotic overhead can outperform the performance floor overhead of random sampling for many tools, and that Artemis can effectively guide a monitoring tool to the buggy regions of a program.^
Samuel P. Midkiff, Purdue University.