Bug-Assist: Assisting Fault Localization in ANSI-C Programs

  • Manu Jose
  • Rupak Majumdar
Part of the Lecture Notes in Computer Science book series (LNCS, volume 6806)


Several verification tools exist for checking safety properties of programs and reporting errors. However, a large part of the program development cycle is spend in analyzing the error trace to isolate locations in the code that are potential causes of the bug. Currently, this is usually performed manually, by stepping through the error trace in a debugger. We describe Bug-Assist, a tool that assists programmers localize error causes to a few lines of code. Bug-Assist takes as input an ANSI-C program annotated with assertions, performs bounded model checking to find potential assertion violations, and for each error trace returned by the model checker, returns a set of lines of code which can be changed to eliminate the error trace. Bug-Assist formulates error localization as a MAX-SAT problem and uses scalable MAX-SAT solvers. In experiments on a set of C benchmarks, Bug-Assist was able to reduce error traces to only a few lines of code. Bug-Assist is available as an Eclipse plug-in, enabling its easy deployment in the code development phase.


Trace Formula Conjunctive Normal Form Boolean Formula Bounded Model Check Integrate Development Environ 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. 1.
    Ball, T., Naik, M., Rajamani, S.K.: From symptom to cause: localizing errors in counterexample traces. In: POPL 2003: Principles of Programming Languages, pp. 97–105. ACM, New York (2003)Google Scholar
  2. 2.
    Biere, A., Cimatti, A., Clarke, E.M., Fujita, M., Zhu, Y.: Symbolic model checking using SAT procedures instead of BDDs. In: DAC 1999: Design Automation Conference, pp. 317–320. ACM, New York (1999)Google Scholar
  3. 3.
    Clarke, E., Kröning, D., Lerda, F.: A tool for checking ANSI-C programs. In: Jensen, K., Podelski, A. (eds.) TACAS 2004. LNCS, vol. 2988, pp. 168–176. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  4. 4.
    Do, H., Elbaum, S., Rothermel, G.: Supporting controlled experimentation with testing techniques: An infrastructure and its potential impact. Empirical Software Engineering 10(4), 405–435 (2005)CrossRefGoogle Scholar
  5. 5.
    Groce, A., Chaki, S., Kroening, D., Strichman, O.: Error explanation with distance metrics. Int. J. Softw. Tools Technol. Transf. 8(3), 229–247 (2006)CrossRefGoogle Scholar
  6. 6.
    Jones, J.A., Harrold, M.J.: Empirical evaluation of the tarantula automatic fault-localization technique. In: ASE 2005: Automated Software Engineering, pp. 273–282. ACM, New York (2005)Google Scholar
  7. 7.
    Jose, M., Majumdar, R.: Cause clue clauses: Error localization using maximum satisfiability. In: PLDI 2011: Programming Language Design and Implementation, ACM, New York (2011)Google Scholar
  8. 8.
    Marques-Silva, J., Planes, J.: Algorithms for maximum satisfiability using unsatisfiable cores. In: DATE 2008: Design, Automation and Test in Europe, pp. 408–413. ACM, New York (2008)CrossRefGoogle Scholar
  9. 9.
    Zeller, A.: Isolating cause-effect chains from computer programs. In: Daemen, J., Rijmen, V. (eds.) FSE 2002. LNCS, vol. 2365, pp. 1–10. Springer, Heidelberg (2002)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2011

Authors and Affiliations

  • Manu Jose
    • 1
  • Rupak Majumdar
    • 1
    • 2
  1. 1.Department of Computer ScienceUniversity of CaliforniaLos AngelesUSA
  2. 2.Max Planck Institute for Software SystemsKaiserslauternGermany

Personalised recommendations