# US 10,481,999 B2 · Partial process recording

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,481,999 B2
- Document ID: US10481999B2
- Status: Granted
- Kind: B2
- Application number: 15/369,332
- Filed: 2016-12-05
- Published: 2018-06-07
- Granted: 2019-11-19
- Earliest claimed: 2016-12-05
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: Jordi Mola; Juan Carlos Arevalo Baeza; Darek Josip Mihocka
- Web page: https://patentgrep.com/patent/US10481999B2

## CPC

- G06F 11/364: {tracing values on a bus}
- G06F 11/3636: {by tracing the execution of the program}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Techniques for processing recorded program data are described. In implementations, a trace module in a computing device processes instructions of a recorded program and generates a trace file for program optimization. In implementations, the trace module records a subset of a received program for inclusion in the trace file. The computing device can also or instead be implemented to gather and initiate analysis of application data proactively and without user initiation.

## Claims

### Claim 1

A system for trimming portions of a program during tracing of the program, the system comprising:
one or more processors;
a memory; and
computer-readable storage media including instructions stored thereon that, responsive to execution by the one or more processors, cause the system to perform operations comprising:
executing code of a program at the one or more processors, including executing a plurality of program units in the code of the program;
while executing the code of the program at the one or more processors, identifying replay-able trace data that represents the execution of the code of the program at the one or more processors, the replay-able trace data comprising a plurality of portions of trace data that record the execution of a plurality of program units of the code of the program;
identifying a subset of the plurality of portions of trace data that record execution of a pre-specified subset of the plurality of program units that is less than all of the plurality of program units, the subset of the plurality of portions of trace data being less than all of the plurality of portions of trace data; and
based on the subset of the plurality of portions of trace data recording execution of the pre-specified subset of the plurality of program units, committing the subset of the plurality of portions of trace data to a replay-able trace that is stored in the memory, such that the replay-able trace enables replay of a subset of the prior execution of the code of the program that corresponds to execution of the pre-specified subset of the plurality of program units.

### Claim 2 (depends on 1)

The system of claim 1, the operations further comprising sanitizing the replay-able trace to remove sensitive information during the tracing of the program.

### Claim 3 (depends on 1)

The system of claim 1, wherein the operations further comprising representing one or more program units in the replay-able trace with one or more of: instructions, memory values, or code data that capture an effect of the one or more program units.

### Claim 4 (depends on 1)

The system of claim 1, the operations further comprising detecting, during execution of the code of the program at the one or more processors, a change in memory contents that occurred from outside the code of the program, including memory modifications effected by one or more of: a hardware component, a kernel, another thread, or another process.

### Claim 5 (depends on 1)

The system of claim 1, wherein the pre-specified subset of the plurality of program units are automatically determined independent of user input.

### Claim 6 (depends on 1)

The system of claim 1, wherein the replay-able trace includes one or more of: memory data, executed instructions, or code data.

### Claim 7 (depends on 1)

The system of claim 1, the operations further comprising outputting the replay-able trace for presentation in a user interface.

### Claim 8 (depends on 1)

The system of claim 1, the operations further comprising providing the replay-able trace to identify an abnormality in the execution of the code of the program at the one or more processors.

### Claim 9 (depends on 1)

The system of claim 1, the operations further comprising replaying the replay-able trace to reproduce events occurring during the execution of the code of the program at the one or more processors.

### Claim 10 (depends on 1)

The system of claim 1, wherein the subset of the plurality of portions of trace data is identified based on one or more of an input parameter value, a particular amount of trace data, a percentage of recorded execution of code, code not in a particular module, or code signed by a particular entity.

### Claim 11

A method, implemented at a computer system that includes one or more processors, for trimming portions of a program during tracing of the program, the method comprising:
executing code of a program at the one or more processors, including executing a plurality of program units in the code of the program;
while executing the code of the program at the one or more processors, identifying replay-able trace data that represents the execution of the code of the program at the one or more processors, the replay-able trace data comprising a plurality of portions of trace data that record the execution of a plurality of program units of the code of the program;
identifying a subset of the plurality of portions of trace data that record execution of a pre-specified subset of the plurality of program units that is less than all of the plurality of program units, the subset of the plurality of portions of trace data being less than all of the plurality of portions of trace data; and
based on the subset of the plurality of portions of trace data recording execution of the pre-specified subset of the plurality of program units, committing the subset of the plurality of portions of trace data to a replay-able trace that is stored in a memory, such that the replay-able trace enables replay of a subset of the prior execution of the code of the program that corresponds to execution of the pre-specified subset of the plurality of program units.

### Claim 12 (depends on 11)

The method of claim 11, further comprising sanitizing the replay-able trace to remove sensitive information during the tracing of the program.

### Claim 13 (depends on 11)

The method of claim 11, further comprising representing one or more program units in the replay-able trace with one or more of: instructions, memory values, or code data that capture an effect of the one or more program units.

### Claim 14 (depends on 11)

The method of claim 11, further comprising detecting, during execution of the code of the program at the one or more processors, a change in memory contents that occurred from outside the code of the program, including memory modifications effected by one or more of: a hardware component, a kernel, another thread, or another process.

### Claim 15 (depends on 11)

The method of claim 11, wherein the pre-specified subset of the plurality of program units are automatically determined independent of user input.

### Claim 16 (depends on 11)

The method of claim 11, wherein the replay-able trace includes one or more of: memory data, executed instructions, or code data.

### Claim 17 (depends on 11)

The method of claim 11, further comprising providing the replay-able trace to identify an abnormality in the execution of the code of the program at the one or more processors.

### Claim 18 (depends on 11)

The method of claim 11, further comprising replaying the replay-able trace to reproduce events occurring during the execution of the code of the program at the one or more processors.

### Claim 19 (depends on 11)

The method of claim 11, wherein the subset of the plurality of portions of trace data is identified based on one or more of an input parameter value, a particular amount of trace data, a percentage of recorded execution of code, code not in a particular module, or code signed by a particular entity.

### Claim 20

A computer program product comprising one or more hardware storage devices having stored thereon computer-executable instructions that are executable by one or more processors of a computer system to cause the computer system to perform at least the following:
execute code of a program at the one or more processors, including executing a plurality of program units in the code of the program;
while executing the code of the program at the one or more processors, identify replay-able trace data that represents the execution of the code of the program at the one or more processors, the replay-able trace data comprising a plurality of portions of trace data that record the execution of a plurality of program units of the code of the program;
identify a subset of the plurality of portions of trace data that record execution of a pre-specified subset of the plurality of program units that is less than all of the plurality of program units, the subset of the plurality of portions of trace data being less than all of the plurality of portions of trace data; and
based on the subset of the plurality of portions of trace data recording execution of the pre-specified subset of the plurality of program units, commit the subset of the plurality of portions of trace data to a replay-able trace that is stored in a memory, such that the replay-able trace enables replay of a subset of the prior execution of the code of the program that corresponds to execution of the pre-specified subset of the plurality of program units.
