Program tracing for time travel debugging and analysis
First Claim
1. A computer system, comprising:
- one or more processors; and
one or more computer-readable media having stored thereon computer-executable instructions that are executable by the one or more processors to cause the computer system to record a replay-able trace of execution of a multi-threaded process, the computer-executable instructions including instructions that are executable to cause the computer system to perform at least the following;
identify a trace memory model that defines one or more orderable events that are to be ordered across a plurality of threads of the multi-threaded process;
execute the plurality of threads concurrently across one or more processing units of the one or more processors; and
during execution of the plurality of threads, record a separate replay-able trace for each thread independently, including, for each thread;
recording initial state for the thread;
recording at least one memory read performed by at least one processor instruction executed by the thread that takes memory as input;
recording at least one orderable event performed by the thread with a monotonically increasing number that orders the event among other orderable events across the plurality of threads; and
recording a plurality of key frames for each of the plurality of threads, each of the plurality of key frames including information sufficient to enable the computer system to begin replaying the separate replay-able traces at execution locations that each correspond to a particular one of the plurality of key frames, wherein the plurality of key frames includes both a full key frame and a lightweight key frame, the full key frame including supplemental information in addition to the information needed to enable the computer system to begin replaying the separate replay-able traces at particular execution locations.
1 Assignment
0 Petitions
Accused Products
Abstract
Recording a replay-able trace of execution of a multi-threaded process includes identifying a trace memory model that defines one or more orderable events that are to be ordered across a plurality of threads of the multi-threaded process. The plurality of threads are executed concurrently across one or more processing units of one or more processors. During execution of the plurality of threads, a separate replay-able trace is recorded for each thread independently. Recording includes, for each thread, recording initial state for the thread, recording at least one memory read performed by at least one processor instruction executed by the thread that takes memory as input, and recording a least one orderable event performed by the thread with a monotonically increasing number that orders the event among other orderable events across the plurality of threads.
92 Citations
21 Claims
-
1. A computer system, comprising:
-
one or more processors; and one or more computer-readable media having stored thereon computer-executable instructions that are executable by the one or more processors to cause the computer system to record a replay-able trace of execution of a multi-threaded process, the computer-executable instructions including instructions that are executable to cause the computer system to perform at least the following; identify a trace memory model that defines one or more orderable events that are to be ordered across a plurality of threads of the multi-threaded process; execute the plurality of threads concurrently across one or more processing units of the one or more processors; and during execution of the plurality of threads, record a separate replay-able trace for each thread independently, including, for each thread; recording initial state for the thread; recording at least one memory read performed by at least one processor instruction executed by the thread that takes memory as input; recording at least one orderable event performed by the thread with a monotonically increasing number that orders the event among other orderable events across the plurality of threads; and recording a plurality of key frames for each of the plurality of threads, each of the plurality of key frames including information sufficient to enable the computer system to begin replaying the separate replay-able traces at execution locations that each correspond to a particular one of the plurality of key frames, wherein the plurality of key frames includes both a full key frame and a lightweight key frame, the full key frame including supplemental information in addition to the information needed to enable the computer system to begin replaying the separate replay-able traces at particular execution locations. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A method, implemented at a computer system that includes one or more processors, for recording a replay-able trace of execution of a multi-threaded process, the method comprising:
-
identifying a trace memory model that defines one or more orderable events that are to be ordered across a plurality of threads of the multi-threaded process; executing the plurality of threads concurrently across one or more processing units of the one or more processors; and during execution of the plurality of threads, recording a separate replay-able trace for each thread independently, including, for each thread; recording initial state for the thread; recording at least one memory read performed by at least one processor instruction executed by the thread that takes memory as input; recording a least one orderable event performed by the thread with a monotonically increasing number that orders the event among other orderable events across the plurality of threads; and recording a plurality of key frames for each of the plurality of threads, each of the plurality of key frames including information sufficient to enable the computer system to begin replaying the separate replay-able traces at execution locations that each correspond to a particular one of the plurality of key frames, wherein the plurality of key frames includes both a full key frame and a lightweight key frame, the full key frame including supplemental information in addition to the information needed to enable the computer system to begin replaying the separate replay-able traces at particular execution locations. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20)
-
-
21. One or more hardware storage devices having stored thereon computer-executable instructions, the computer-executable instructions being executable by one or more processors of a computer system to cause the computer system to record a replay-able trace of execution of a multi-threaded process by causing the computer system to:
-
identify a trace memory model that defines one or more orderable events that are to be ordered across a plurality of threads of the multi-threaded process; execute the plurality of threads concurrently across one or more processing units of the one or more processors; and during execution of the plurality of threads, record a separate replay-able trace for each thread independently, including, for each thread; recording initial state for the thread; recording the side effects of at least one non-deterministic processor instruction executed by the thread; recording at least one memory read performed by at least one processor instruction executed by the thread that takes memory as input; recording a least one orderable event performed by the thread with a monotonically increasing number that orders the event among other orderable events across the plurality of threads; and recording a plurality of key frames for each of the plurality of threads, each of the plurality of key frames including information sufficient to enable the computer system to begin replaying the separate replay-able traces at execution locations that each correspond to a particular one of the plurality of key frames, wherein the plurality of key frames includes both a full key frame and a lightweight key frame, the full key frame including supplemental information in addition to the information needed to enable the computer system to begin replaying the separate replay-able traces at particular execution locations.
-
Specification