VERMEER: A Tool for Tracing and Explaining Faulty C Programs

We present VERMEER, a new automated debugging tool for C. VERMEER combines two functionalities: (1) a dynamic tracer that produces a linearized trace from a faulty C program and a given test input; and (2) a static analyzer that explains why the trace fails. The tool works in phases that simplify the input program to a linear trace, which is then analyzed using an automated theorem prover to produce the explanation. The output of each phase is a valid C program. VERMEER is able to produce useful explanations of non trivial traces for real C programs within a few seconds. The tool demo can be found at http://youtu.be/E5lKHNJVerU.

[1]  George C. Necula,et al.  CIL: Intermediate Language and Tools for Analysis and Transformation of C Programs , 2002, CC.

[2]  Emina Torlak,et al.  Angelic debugging , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[3]  Thomas Wies,et al.  Error Invariants , 2012, FM.

[4]  Thomas Wies,et al.  Concolic Fault Abstraction , 2014, 2014 IEEE 14th International Working Conference on Source Code Analysis and Manipulation.

[5]  Isil Dillig,et al.  Automated error diagnosis using abductive inference , 2012, PLDI.

[6]  Rolf Drechsler,et al.  Using unsatisfiable cores to debug multiple design errors , 2008, GLSVLSI '08.

[7]  Ilan Beer,et al.  Explaining counterexamples using causality , 2009, Formal Methods in System Design.

[8]  Rupak Majumdar,et al.  Bug-Assist: Assisting Fault Localization in ANSI-C Programs , 2011, CAV.

[9]  Gregg Rothermel,et al.  Supporting Controlled Experimentation with Testing Techniques: An Infrastructure and its Potential Impact , 2005, Empirical Software Engineering.

[10]  Thomas Wies,et al.  Flow-Sensitive Fault Localization , 2013, VMCAI.

[11]  Niklas Sörensson,et al.  An Extensible SAT-solver , 2003, SAT.

[12]  Sarfraz Khurshid,et al.  Improving the effectiveness of spectra-based fault localization using specifications , 2012, 2012 Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering.

[13]  Emina Torlak,et al.  What Gives? A Hybrid Algorithm for Error Trace Explanation , 2014, VSTTE.

[14]  Wolfram Schulte,et al.  Vx86: x86 Assembler Simulated in C Powered by Automated Theorem Proving , 2008, AMAST.

[15]  Alessandro Orso,et al.  F3: fault localization for field failures , 2013, ISSTA.