The resources available for testing and verifying software are always limited, and through sheer numbers an application's user community will uncover many flaws not caught during development. The Cooperative Bug Isolation Project (CBI) marshals large user communities into a massive distributed debugging army to help programmers find and fix problems that appear after deployment. Dynamic instrumentation based on sparse random sampling provides our raw data; statistical machine learning techniques mine this data for critical bug predictors; static program analysis places bug predictors back in context of the program under study. We discuss CBI's dynamic, statistical, and static views of post-deployment debugging and show how these three different approaches join together to help improve software quality in an imperfect world.
Ben Liblit is an Assistant Professor at the University of Wisconsin-Madison. He recently won the ACM Doctoral Dissertation Award for his work on Cooperative Bug Isolation.