KLOVER: A Symbolic Execution and Automatic Test Generation Tool for C++ Programs

  • Guodong Li
  • Indradeep Ghosh
  • Sreeranga P. Rajan
Part of the Lecture Notes in Computer Science book series (LNCS, volume 6806)


We present the first symbolic execution and automatic test generation tool for C++ programs. First we describe our effort in extending an existing symbolic execution tool for C programs to handle C++ programs. We then show how we made this tool generic, efficient and usable to handle real-life industrial applications. Novel features include extended symbolic virtual machine, library optimization for C and C++, object-level execution and reasoning, interfacing with specific type of efficient solvers, and semi-automatic unit and component testing. This tool is being used to assist the validation and testing of industrial software as well as publicly available programs written using the C++ language.


Manual Testing Symbolic Execution Branch Coverage External Function Runtime Type 
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.
    Anand, S., Păsăreanu, C.S., Visser, W.: JPF–SE: A symbolic execution extension to java pathFinder. In: Grumberg, O., Huth, M. (eds.) TACAS 2007. LNCS, vol. 4424, pp. 134–138. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  2. 2.
    Bjørner, N., Tillmann, N.: Path feasibility analysis for string-manipulating programs. In: Kowalewski, S., Philippou, A. (eds.) TACAS 2009. LNCS, vol. 5505, Springer, Heidelberg (2009)CrossRefGoogle Scholar
  3. 3.
    Blanc, N., Groce, A., Kroening, D.: Verifying C++ with STL containers via predicate abstraction. In: Automated Software Engineering, ASE (2007)Google Scholar
  4. 4.
    Cadar, C., Dunbar, D., Engler, D.R.: KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs. In: 8th USENIX Symposium on Operating Systems Design and Implementation, OSDI (2008)Google Scholar
  5. 5.
    Li, G., Ghosh, I., Rajan, S. P., and Gopalakrishnan, G. GKLEE: A symbolic execution and automatic test generation tool for GPU programs, Draft (2011)Google Scholar
  6. 6.
    Li, G., Gopalakrishnan, G.: Scalable SMT-based verification of GPU kernel functions. In: Foundations of Software Engineering, SIGSOFT FSE (2010)Google Scholar
  7. 7.
    The LLVM compiler infrastructure,
  8. 8.
    uClibc++: An embedded C++ library,

Copyright information

© Springer-Verlag Berlin Heidelberg 2011

Authors and Affiliations

  • Guodong Li
    • 1
  • Indradeep Ghosh
    • 1
  • Sreeranga P. Rajan
    • 1
  1. 1.Fujitsu Labs of AmericaUSA

Personalised recommendations