Backward post-execution software debugger
AssigneeGreen Hills Software, Inc.
InventorsMichael Lindahl, Andre Yew, Mallory Morgan Green, II, Michael Johnson, Allan Craig Franklin, Daniel O'Dowd, Neil Puthuff
Life of this patent
Estimating the term…
Abstract
A method finds an error in a computer program. A plurality of execution breakpoints are set in the computer program. A portion of the execution of the computer program is simulated as recorded in the trace data in the reverse order until one a plurality of conditions is met, wherein one of the plurality of conditions is an attempt to execute a machine instruction associated with one of the plurality of execution breakpoints.
Claims49
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 one or more of said instructions that is associated with a read operation, and a write indicator and one or more affected memory address identifiers for one or more 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;
- 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;
- inputting a start command to continue 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 one of a plurality of conditions is met, wherein one of the plurality of conditions is an attempt to simulate the execution of a machine instruction associated with one or more of the plurality of breakpoints and
- setting one or more additional breakpoints before inputting the start command.
A method of debugging a computer program comprising:
- recording trace data from an execution of the computer program for a time period;
- setting a plurality of execution breakpoints in the computer program;
- simulating a portion of the execution of the computer program as recorded in the trace data in the reverse order until one of a plurality of conditions is met, wherein one of the plurality of conditions is an attempt to simulate the execution of a machine instruction associated with one of the plurality of execution breakpoints;
- inputting a start command to continue 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 one of a plurality of conditions is met, wherein one of the plurality of conditions is an attempt to simulate the execution of a machine instruction associated with one of the plurality of execution breakpoints;
- and
- setting one or more additional breakpoints before inputting the start command.
A method of finding an error in a computer program comprising:
- recording trace data from an execution of the computer program for a time period;
- setting a plurality of execution breakpoints in the computer program;
- simulating a portion of the execution of the computer program as recorded in the trace data in the reverse order until one of a plurality of conditions is met, wherein one of the plurality of conditions is an attempt to simulate the execution of a machine instruction associated with one of the plurality of execution breakpoints;
- providing a display command;
- inputting a start command to continue 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 one of a plurality of conditions is met, wherein one of the plurality of conditions is an attempt to simulate the execution of a machine instruction associated with one of the plurality of execution breakpoints;
- and
- setting one or more additional breakpoints before inputting the start command.
A method of finding an error in a computer program comprising:
- recording trace data from an execution of the computer program for a time period;
- setting a plurality of execution breakpoints in the computer program;
- and
- simulating a portion of the execution of the computer program as recorded in the trace data in the reverse order until one of a plurality of conditions is met, wherein one of the plurality of conditions is an attempt to simulate the execution of a machine instruction associated with one of the plurality of execution breakpoints;
- inputting a start command to continue simulating a portion of the execution of the computer program as recorded in the trace data in the same order with respect to the order in which the trace data was recorded until one of a plurality of conditions is met, wherein one of the plurality of conditions is an attempt to simulate the execution of a machine instruction associated with one of the plurality of execution breakpoints and
- setting one or more additional breakpoints before inputting the start command.
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 one or more of said instructions that is associated with a read 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;
- 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;
- inputting a start command to continue 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 one of a plurality of conditions is met, wherein one of the plurality of conditions is an attempt to simulate the execution of a machine instruction associated with one or more of the plurality of breakpoints and
- setting one or more additional breakpoints before inputting the start command.
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 write indicator and one or more affected memory address identifiers for one or more 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;
- 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;
- inputting a start command to continue 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 one of a plurality of conditions is met, wherein one of the plurality of conditions is an attempt to simulate the execution of a machine instruction associated with one or more of the plurality of breakpoints and
- setting one or more additional breakpoints before inputting the start command.
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;
- 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;
- 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;
- inputting a start command to continue 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 one of a plurality of conditions is met, wherein one of the plurality of conditions is an attempt to simulate the execution of a machine instruction associated with one or more of the plurality of breakpoints and
- setting one or more additional breakpoints before inputting the start command.
Dependencies are inferred from the claim text.