1. A method of debugging a computer program comprising: recording trace data from an execution of the computer program for a time period, wherein said trace data comprises a record of a sequence of instructions performed by a processor while executing a portion of said computer program, along with a read indicator and one or more affected memory address identifiers for each of said instructions that is associated with a read operation, and a write indicator and one or more affected memory address identifiers for each of said instructions that is associated with a write operation; setting an access breakpoint in the computer program, wherein said access breakpoint is associated with a memory location and is triggered upon detection of an attempt to access said memory location; and simulating a portion of the execution of the computer program as recorded in the trace data in the reverse order with respect to the order in which the trace data was recorded until detecting an attempt to access a memory location associated with said access breakpoint.