3. The method of claim 1 , where determining the second point in the computer code further includes: determining the second point as a point, in the computer code, that includes an input, a variable assignment, a variable declaration, or a function return value.
1. A method, comprising: receiving computer code, the receiving being performed by a device; performing a static verification analysis of the computer code to locate a point in the code that, under at least one set of states of variables in the computer code, causes an error in an execution of the computer code, the static analysis being performed by analyzing a first plurality of possible execution paths of the computer code based on an over-approximation of states, and the performing is being performed by the device; back-propagating, from the located point, through a second plurality of possible execution paths, the second plurality of possible execution paths being obtained based on an under-approximation of the states that were over-approximated, and the back-propagating being performed by the device; determining, based on the back-propagating, a second point in the computer code as a potential cause of the error, the determining being performed by the device; analyzing, using empiric techniques and based on semantic information for the computer code, the computer code to determine a category for the potential cause of the error, the analyzing the computer code being performed by the device, and the category comprising one of: a first category when the cause of the error is determined to be within the computer code, or a second category when the cause of the error is determined to be due to an input to the computer code; and storing output information associated with the second point in the computer code, the storing being performed by the device.