# US 10,769,047 B2 · Stepping and application state viewing between points

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

- Number: US 10,769,047 B2
- Document ID: US10769047B2
- Status: Granted
- Kind: B2
- Application number: 15/169,684
- Filed: 2016-05-31
- Published: 2016-11-17
- Granted: 2020-09-08
- Earliest claimed: 2006-10-31
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: Douglas J. Rosen
- Web page: https://patentgrep.com/patent/US10769047B2

## CPC

- G06F 11/362: Debugging of software
- G06F 11/3624: {by performing operations on the source code, e.g. via a compiler}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Various technologies and techniques are disclosed for providing stepping and state viewing in a debugger application. A start and end breakpoint are assigned. Source code execution begins, and upon reaching the start breakpoint, a logging feature begins storing one or more values that may be impacted upon execution of code between the start breakpoint and an end breakpoint. More lines of source code are executed until the end breakpoint is reached. When the end breakpoint is reached, the debugger is put into break mode. While in break mode, a playback feature is provided to allow a user to play back a path of execution that occurred between the start breakpoint and the end breakpoint. The playback feature uses at least some of the values that were stored with the logging feature to show how each referenced variable changed in value.

## Claims

### Claim 1

A method of debugging code performed on a computing device, the method comprising:
debugging a portion of code by logging, by the computing device, the portion of code located between a start breakpoint and an end breakpoint assigned in the code as the portion of the code is executed, where the logging includes storing a value of a variable that is determined from execution of the logged portion of the code in a memory from which the value of the variable is accessible for playback of the portion of the code, and where the start breakpoint represents a point in code execution where logging of executing code begins and the end breakpoint represents a point in code execution where execution and logging stops.

### Claim 2 (depends on 1)

The method of claim 1 further comprising jumping backward, by the computing device in response to user input, in an execution path of the executed code.

### Claim 3 (depends on 1)

The method of claim 1 where the execution of the code stops upon reaching the end breakpoint.

### Claim 4 (depends on 1)

The method of claim 1 further comprising playing back at least some of the logged portion of the code.

### Claim 5 (depends on 4)

The method of claim 4 where the playing back comprises stepping forward or backward through at least some of the logged portion of the code.

### Claim 6 (depends on 4)

The method of claim 4 where the playing back comprises displaying the stored value of the variable.

### Claim 7 (depends on 1)

The method of claim 1, wherein the variable is expressed in the portion of the code, and the value of the variable is calculated from execution of a function also expressed in the portion of code.

### Claim 8

A computing device comprising:
at least one processor; and
memory that is coupled to the at least one processor and that includes computer-executable instructions that, based on execution by the at least one processor, configure the computing device to perform actions comprising:
debugging a portion of code by logging, by the computing device, the portion of code located between a start breakpoint and an end breakpoint assigned in the code as the portion of the code is executed, where the logging includes storing a value of a variable that is determined from execution of the logged portion of the code in a memory from which the value of the variable is accessible for playback of the portion of the code, and where the start breakpoint represents a point in code execution where logging of executing code begins and the end breakpoint represents a point in code execution where execution and logging stops.

### Claim 9 (depends on 8)

The computing device of claim 8 where the value of variable is stored upon execution of the code reaching the start breakpoint and each time the value changes prior to execution of the code reaching the end breakpoint.

### Claim 10 (depends on 8)

The computing device of claim 8 where the execution of the code stops upon reaching the end breakpoint.

### Claim 11 (depends on 8)

The computing device of claim 8, the actions further comprising playing back at least some of the logged portion of the code.

### Claim 12 (depends on 11)

The computing device of claim 11 where the playing back comprises stepping forward or backward through at least some of the logged portion of the code.

### Claim 13 (depends on 11)

The computing device of claim 11 where the playing back comprises displaying at least some of the stored values of the variables.

### Claim 14 (depends on 8)

The computing device of claim 8, wherein the variable is expressed in the portion of the code, and the value of the variable is calculated from execution of a function also expressed in the portion of code.

### Claim 15

At least one hardware computer storage device storing computer-executable instructions that, based on execution by at least one processor of a computing device, configure the computing device to perform actions comprising:
debugging a portion of code by logging, by the computing device, the portion of code located between a start breakpoint and an end breakpoint assigned in the code as the portion of the code is executed, where the logging includes storing a value of a variable that is determined from execution of the logged portion of the code in a memory from which the value of the variable is accessible for playback of the portion of the code, and where the start breakpoint represents a point in code execution where logging of executing code begins and the end breakpoint represents a point in code execution where execution and logging stops.

### Claim 16 (depends on 15)

The at least one hardware computer storage device of claim 15 where the value of variable is stored upon execution of the code reaching the start breakpoint and each time the value changes prior to execution of the code reaching the end breakpoint.

### Claim 17 (depends on 15)

The at least one hardware computer storage device of claim 15 where the execution of the code stops upon reaching the end breakpoint.

### Claim 18 (depends on 15)

The at least one hardware computer storage device of claim 15, the actions further comprising playing back at least some of the logged portion of the code.

### Claim 19 (depends on 18)

The at least one hardware computer storage device of claim 18 where the playing back comprises stepping forward through at least some of the logged portion of the code, or where the playing back comprises stepping backward through at least some of the logged portion of the code.

### Claim 20 (depends on 18)

The at least one hardware computer storage device of claim 18 where the playing back comprises displaying at least some of the stored values of the variables.

### Claim 21 (depends on 15)

The at least one hardware computer storage device of claim 15, wherein the variable is expressed in the portion of the code, and the value of the variable is calculated from execution of a function also expressed in the portion of code.

### Claim 22

A method of debugging performed on a computing device, the method comprising:
debugging a portion of code by logging, by the computing device during execution of the portion of code located between a start point and an end point, where the logging includes storing a value of a variable expressed in the portion of the code in a memory from which the value of the variable is accessible for playback of the portion of the code, and the value of the variable is calculated from execution of a function also expressed in the portion of code, where the value of the variable is logged regardless of whether or not the value changes as the portion of code is executed, and where the start point represents a point in code execution where logging of executing code begins and the end point represents a point in code execution where execution and logging stops, and
jumping, by the computing device based on user input, backward in an execution path of the portion of executed code.

### Claim 23 (depends on 22)

The method of claim 22 where the logging further comprises logging the portion of the code located between the start point and the end point as the portion of the code is executed.

### Claim 24 (depends on 22)

The method of claim 22 where the start point and the end point are breakpoints assigned in the code.

### Claim 25 (depends on 22)

The method of claim 22 where the jumping is performed as part of playing back at least some of the logged portion of the executed code.

### Claim 26 (depends on 25)

The method of claim 25 where the playing back comprises displaying the stored value of the variable.

### Claim 27 (depends on 25)

The method of claim 25 where the playing back comprises stepping forward or backward through at least some of the logged portion of the code.
