Recording and replaying computer programs
First Claim
1. A method of modifying a computer program to support recording execution, the method comprising the computer-implemented steps of:
- receiving an executable application binary;
modifying the executable application binary by adding one or more proxy code elements to result in creating a modified application binary, wherein upon execution of the modified application binary, the one or more proxy code elements create and store recorded information representing all non-deterministic events that cannot be predicted that occur during the execution;
receiving user input requesting replaying the execution;
in response to the user input, replaying the execution of the modified application binary, wherein replaying comprises providing the modified application binary with the recorded information representing the non-deterministic events that cannot be predicted; and
wherein the proxy code elements comprise event handlers to generate and provide the modified application binary with missing non-deterministic event information when a non-deterministic event occurs during the execution but not during the replaying.
4 Assignments
0 Petitions
Accused Products
Abstract
A method is disclosed for recording and replaying computer programs. In one embodiment, a method of modifying a computer program to support recording execution, comprises the computer-implemented steps of receiving an executable application binary; modifying the executable application binary by adding one or more proxy code elements to result in creating a modified application binary, wherein upon execution of the modified application binary, the one or more proxy code elements create and store recorded information representing all non-deterministic events that occur during the execution. For example, asynchronous callbacks and thread context switches are recorded and can be replayed.
109 Citations
48 Claims
-
1. A method of modifying a computer program to support recording execution, the method comprising the computer-implemented steps of:
-
receiving an executable application binary; modifying the executable application binary by adding one or more proxy code elements to result in creating a modified application binary, wherein upon execution of the modified application binary, the one or more proxy code elements create and store recorded information representing all non-deterministic events that cannot be predicted that occur during the execution; receiving user input requesting replaying the execution; in response to the user input, replaying the execution of the modified application binary, wherein replaying comprises providing the modified application binary with the recorded information representing the non-deterministic events that cannot be predicted; and wherein the proxy code elements comprise event handlers to generate and provide the modified application binary with missing non-deterministic event information when a non-deterministic event occurs during the execution but not during the replaying. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A computer-readable medium, comprising volatile or non-volatile media, carrying one or more sequences of instructions for modifying a computer program to support recording execution, which instructions, when executed by one or more processors, cause the one or more processors to carry out the steps of:
-
receiving an executable application binary; modifying the executable application binary by adding one or more proxy code elements to result in creating a modified application binary, wherein upon execution of the modified application binary, the one or more proxy code elements create and store recorded information representing all non-deterministic events that cannot be predicted that occur during the execution; receiving user input requesting replaying the execution; in response to the user input, replaying the execution of the modified application binary, wherein replaying comprises providing the modified application binary with the recorded information representing the non-deterministic events that cannot be predicted; wherein the proxy code elements comprise event handlers to generate and provide the modified application binary with missing non-deterministic event information when a non-deterministic event occurs during the execution but not during the replaying. - View Dependent Claims (20, 21, 22, 23, 24, 25, 26, 27, 28)
-
-
29. An apparatus for modifying a computer program to support recording execution, comprising:
-
means for receiving an executable application binary; means for modifying the executable application binary by adding one or more proxy code elements to result in creating a modified application binary, wherein upon execution of the modified application binary, the one or more proxy code elements create and store recorded information representing all non-deterministic events that cannot be predicted that occur during the execution; means for receiving user input requesting replaying the execution; means for replaying the execution of the modified application binary in response to the user input, wherein replaying comprises providing the modified application binary with the recorded information representing the non-deterministic events that cannot be predicted; and wherein the proxy code elements comprise event handlers to generate and provide the modified application binary with missing non-deterministic event information when a non-deterministic event occurs during the execution but not during the replaying. - View Dependent Claims (30, 31, 32, 33, 34, 35, 36, 37, 38)
-
-
39. An apparatus for modifying a computer program to support recording execution, comprising:
-
a network interface that is coupled to the data network for receiving one or more packet flows therefrom; a processor; one or more stored sequences of instructions which, when executed by the processor, cause the processor to carry out the steps of; receiving an executable application binary; modifying the executable application binary by adding one or more proxy code elements to result in creating a modified application binary, wherein upon execution of the modified application binary, the one or more proxy code elements create and store recorded information representing all non-deterministic events that cannot be predicted that occur during the execution; receiving user input requesting replaying the execution; in response to the user input, replaying the execution of the modified application binary, wherein replaying comprises providing the modified application binary with the recorded information representing the non-deterministic events that cannot be predicted; and wherein the proxy code elements comprise event handlers to generate and provide the modified application binary with missing non-deterministic event information when a non-deterministic event occurs during the execution but not during the replaying. - View Dependent Claims (40, 41, 42, 43, 44, 45, 46, 47, 48)
-
Specification