Patent ID: 8271955

Claim:
A method of finding an error in a computer program comprising: recording a sequence of trace data during an execution by a processor of said computer program, without intervening in the operation of said processor, wherein said trace data comprises instruction addresses and memory addresses accessed at each of a plurality of execution times; composing a database that represents the state of a memory at each of at least a subset of the plurality of execution times, wherein upon completion of said recording of said sequence of trace data said database contains one or more unknown values for one or more corresponding memory addresses; setting a plurality of breakpoints, each of the plurality of breakpoints being associated with a source code instruction; translating the plurality of breakpoints into a plurality of translated machine instructions; and simulating a forward execution of at least a portion said computer program by changing a plurality of simulated memory values according to the state of the memory in the database until an attempt is made to simulate execution of one of the translated machine instructions or until the execution of the last machine instruction in the portion of the sequence of machine instructions has been simulated.