Patent ID: 8819641

Claim:
A method of analyzing program execution status for use with a computer software debugger comprising: identifying, using at least one computer processor, one or more non-deterministic execution steps in a program in one or more threads, wherein the one or more non-deterministic execution steps comprise computations in which given an initial state of a system and given a same input there are multiple execution paths the system is capable of following and a final state is not predictable wherein the one or more non-deterministic execution steps are performed by a debugger which minimizes recording necessary for deterministic re-execution of program code developed in a language supporting referential transparency, wherein the debugger identifies one or more portions of the program code which are deterministic by ensuring that the one or more identified portions of the program code uses language constructs known to be referentially transparent; recording a state of program properties at the identified one or more non-deterministic execution steps to enable determination of prior program execution status; recording one or more return values or exception results of one or many I/O operations; and resetting a program state to a prior state wherein subsequent re-execution of program code does not submit I/O operations to an operating system and returns values and exception results corresponding to the I/O operations from the recording maintaining behavior and appearance during re-execution of the code consistent with the actual I/O operation during initial execution.