Patent ID: 8732673

Claim:
A computer implemented method of automatically debugging computer program code, comprising: generating static analysis data on computer program code for the computer system, the static analysis data including information on behaviors of the computer program code when executed, wherein the step of generating static analysis data includes generating a control flow graph for the computer program code and mapping data mapping nodes of the control flow graph to an associated line of the computer program code; instrumenting the computer program code by generating the instrumented computer program code from the control flow graph and inserting marker triggers into the computer program code, wherein the marker triggers are configured to generate a marker associated with each of a number of predetermined points in the computer program code that is reached during execution of the computer program code, each marker comprising a binary code and being uniquely identifiable, wherein the points are determined in dependence on the static analysis data; determining a compression scheme from the static analysis data, wherein the binary code for each marker is generated in dependence on the determined compression scheme and wherein determining the compression scheme includes the steps of: examining each branch point in the control flow graph to identify leaf points, a leaf point comprising a branch point which contain no further branch points beneath them; for each leaf point, identifying the number of branches; for each leaf branch point, identifying the parent branch points within the control flow graph which must be traversed in order to reach that leaf branch point; and calculating a minimum marker size in dependence on the number of leaf point and parent branches, the minimum marker size comprising the corresponding number of bits needed to record which branch has been taken; processing data on a run-time error produced by execution of said instrumented computer program code, the generated markers and the static analysis data configured to identify the source of the run-time error; wherein the step of instrumenting comprises: assigning a unique binary code marker to each leaf point and parent branch, the binary code marker being of the calculated minimum marker size.