Statistical Debugging Using Compound Boolean Predicates

2007 International Symposium on Software Testing and Analysis (ISSTA 2007)

Piramanayagam Arumuga Nainar, Ting Chen, Jake Rosin and Ben Liblit


Statistical debugging uses dynamic instrumentation and machine learning to identify predicates on program state that are strongly predictive of program failure. Prior approaches have only considered simple, atomic predicates such as the directions of branches or the return values of function calls. We enrich the predicate vocabulary by adding complex Boolean formulae derived from these simple predicates. We draw upon three-valued logic, static program structure, and statistical estimation techniques to efficiently sift through large numbers of candidate Boolean predicate formulae. We present qualitative and quantitative evidence that complex predicates are practical, precise, and informative. Furthermore, we demonstrate that our approach is robust in the face of incomplete data provided by the sparse random sampling that typifies post-deployment statistical debugging.

Full text: pdf, ps
Suggested Citation: BibTeX

Back to Piramanayagam's home page

Computer Sciences | UW Home