Patent ID: 8122436

Claim:
A computer-implemented method of generating an error report by a computing device of a user, the method comprising: detecting an error in a software program executing on the computing device of the user; responsive to detecting the error, computing a set of path conditions from an execution trace for the software program that is executing by performing forward symbolic execution on the execution trace to generate the set of path conditions, the performing symbolic execution on the execution trace to generate the set of path conditions comprising: computing symbolic values for storage locations that are data dependent on an input to the software program and computing concrete values for storage locations that are not data dependent on the input; executing instructions from the execution trace one at a time, the instructions being executed symbolically when they include at least one source operand that references a storage location with a symbolic value; and upon encountering a branch that is data dependent on the input, adding a path condition to the set to ensure that inputs that satisfy the set of path conditions follow the same path as the execution trace; computing a new input for the software program based on the generated set of path conditions, wherein the new input satisfies the set of path conditions by following the same path as the execution trace for the branch that is data dependent on the input; and generating an error report based on the set of path conditions.