Patent ID: 8869113
Filing Date: 2014-10-21
Classification: G06F

Abstract:
1. A method comprising: by one or more computing devices, compiling a C++ program having one or more input variables to obtain bytecode of the C++ program; modifying a standard C++ library associated with the C++ program to create an optimized C++ library, the optimized C++ library used for symbolic execution and the standard C++ library used for concrete execution, wherein modifying the standard C++ library comprises rewriting one or more classes defined in the standard C++ library to result in fewer execution paths; compiling the optimized C++ library to obtain bytecode of the optimized C++ library; symbolically executing the bytecode of the C++ program and the bytecode of the optimized C++ library, comprising: generating one or more test cases for the C++ program by solving each of the symbolic expressions, the one or more test cases indicating values that satisfy a feasible execution path of the C++ program with respect to the symbolic input; and testing the C++ program by compiling the C++ program to obtain machine code and applying the test cases as input to the machine code.