Combining static and dynamic reasoning for bug detection

  • Authors:
  • Yannis Smaragdakis;Christoph Csallner

  • Affiliations:
  • Department of Computer Science, University of Oregon, Eugene, OR;College of Computing, Georgia Institute of Technology, Atlanta, GA

  • Venue:
  • TAP'07 Proceedings of the 1st international conference on Tests and proofs
  • Year:
  • 2007

Quantified Score

Hi-index 0.00

Visualization

Abstract

Many static and dynamic analyses have been developed to improve program quality. Several of them are well known and widely used in practice. It is not entirely clear, however, how to put these analyses together to achieve their combined benefits. This paper reports on our experiences with building a sequence of increasingly more powerful combinations of static and dynamic analyses for bug finding in the tools JCrasher, Check 'n' Crash, and DSD-Crasher. We contrast the power and accuracy of the tools using the same example program as input to all three. At the same time, the paper discusses the philosophy behind all three tools. Specifically, we argue that trying to detect program errors (rather than to certify programs for correctness) is well integrated in the development process and a promising approach for both static and dynamic analyses. The emphasis on finding program errors influences many aspects of analysis tools, including the criteria used to evaluate them and the vocabulary of discourse.