Program state reversing software development tool
AssigneeEpic Games, Inc.
InventorTimothy Dean Sweeney
Life of this patent
Estimating the term…
Abstract
A method of analyzing program execution status for use with a computer software debugger that includes identifying one or more non-deterministic execution steps in the program in one or more threads and recording a state of program properties at non-deterministic execution steps to enable determination of prior program execution status.
Claims26
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.
A system for analyzing program execution status for use with a computer software debugger comprising:
- a program instruction deterministic analyzer module stored in a non-transitory storage medium which identifies 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;
- a logging module which records a state of program properties at non-deterministic execution steps to enable determination of prior program execution status;
- a recording module which records one or more return values or exception results of one or many I/O operations;
- and
- a module for setting 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.
A non-transitory processor readable storage medium for storing a computer program of instructions configured to be readable by at least one processor for instructing the at least one processor to execute a computer process for analyzing program execution status for use with a computer software debugger, the non-transitory processor readable storage medium comprising:
- instructions stored on a storage medium;
- wherein the instructions are configured to be readable from the storage medium by at least one processor and thereby cause the at least one processor to operate so as to:
- identify 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 use language constructs known to be referentially transparent;
- record a state of program properties at non-deterministic execution steps to enable determination of prior program execution status;
- record one or more return values or exception results of one or many I/O operations;
- and
- reset 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.
Dependencies are inferred from the claim text.