Cache-based 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 an executable entity using cache data, 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 events that are orderable across a plurality of threads of the executable entity;
execute the plurality of threads of the executable entity concurrently across one or more processing units of the one or more processors;
during execution of the plurality of threads, record a separate replay-able trace for each thread independently, including, for each thread;
recording initial processor register state for the thread; and
upon detecting a processor data cache miss based on execution of the thread, recording at least one line of cache data imported into the processor data cache in response to the processor data cache miss; and
during execution of at least one of the plurality of threads,detecting an occurrence of a first event by the thread that should be recorded by its side effects of the first event, and recording the occurrence of the first event by recording the side effects of the first event into a replay-able trace for the thread, including recording one or more register values changed by the first event; and
detecting an occurrence of a second event by the thread that is one of the one or more events that are orderable, and recording the occurrence of the second event by recording a sequence identifier into the replay-able trace for the thread that orders the second event among other events that are orderable across the plurality of threads.
1 Assignment
0 Petitions
Accused Products
Abstract
Recording a replay-able trace of execution of an executable entity using cache data includes executing one or more threads of the executable entity concurrently across one or more processing units of the one or more processors. During execution of the one or more threads, a separate replay-able trace is recorded for each thread independently. Recording includes, for each thread, recording initial processor register state for the thread. Recording also includes, for each thread, and upon detecting a processor data cache miss, recording at least one line of cache data imported into the processor data cache. Recording also includes recording the occurrence of at least one event by recording its side effects.
-
Citations
20 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 an executable entity using cache data, 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 events that are orderable across a plurality of threads of the executable entity; execute the plurality of threads of the executable entity concurrently across one or more processing units of the one or more processors; during execution of the plurality of threads, record a separate replay-able trace for each thread independently, including, for each thread; recording initial processor register state for the thread; and upon detecting a processor data cache miss based on execution of the thread, recording at least one line of cache data imported into the processor data cache in response to the processor data cache miss; and during execution of at least one of the plurality of threads, detecting an occurrence of a first event by the thread that should be recorded by its side effects of the first event, and recording the occurrence of the first event by recording the side effects of the first event into a replay-able trace for the thread, including recording one or more register values changed by the first event; and detecting an occurrence of a second event by the thread that is one of the one or more events that are orderable, and recording the occurrence of the second event by recording a sequence identifier into the replay-able trace for the thread that orders the second event among other events that are orderable across the plurality of threads. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method, implemented at a computer system that includes one or more processors, for recording a replay-able trace of execution of an executable entity using cache data, the method comprising:
-
identifying a trace memory model that defines one or more events that are orderable across a plurality of threads of the executable entity; executing the plurality of threads of the executable entity concurrently across one or more processing units of the one or more processors; during execution of the plurality of threads, recording a separate replay-able trace for each thread independently, including, for each thread; recording initial processor register state for the thread; and upon detecting a processor data cache miss based on execution of the thread, recording at least one line of cache data imported into the processor data cache in response to the processor data cache miss; and during execution of at least one of the plurality of threads, detecting an occurrence of a first event by the thread that should be recorded by side effects of the first event, and recording the occurrence of the first event by recording the side effects of the first event Into a replay-able trace for the thread, including recording one or more register values changed by the first event; and detecting an occurrence of a second event by the thread that is one of the one or more events that are orderable, and recording the occurrence of the second event by recording a sequence identifier into the replay-able trace for the thread that orders the second event among other events that are orderable across the plurality of threads. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17)
-
-
18. A computer program product comprising one or more hardware storage devices 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 an executable entity using cache data, 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 events that are orderable across a plurality of threads of the executable entity; execute the plurality of threads of the executable entity concurrently across one or more processing units of the one or more processors; during execution of the plurality of threads, record a separate replay-able trace for each thread independently, including, for each thread; recording initial processor register state for the thread; upon detecting a processor data cache miss based on execution of the thread, recording at least one line of cache data imported into the processor data cache in response to the processor data cache miss; and during execution of at least one of the plurality of threads, detecting an occurrence of a first event by the thread that should be recorded by side effects of the first event, and recording the occurrence of the first event by recording the side effects of the first event into a replay-able trace for the thread, including recording one or more register values changed by the first event; and detecting an occurrence of a second event by the thread that is one of the one or more events that are orderable, and recording the occurrence of the second event by recording a sequence identifier into the replay-able trace for the thread that orders the second event among other events that are orderable across the plurality of threads. - View Dependent Claims (19, 20)
-
Specification