# US 2019/0317883 A1 · Debugging a live streaming application

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

- Number: US 2019/0317883 A1
- Document ID: US20190317883A1
- Status: Published application
- Kind: A1
- Application number: 16/454,051
- Filed: 2019-06-27
- Published: 2019-10-17
- Earliest claimed: 2016-11-04
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Alexander Cook; David M. Koster; Jason A. Nikolai; Alexander J. Pogue
- Web page: https://patentgrep.com/patent/US20190317883A1

## CPC

- G06F 11/3644: {by instrumenting at runtime}
- G06F 11/323: {Visualisation of programs or trace data}
- G06F 11/3624: {by performing operations on the source code, e.g. via a compiler}
- G06F 11/3628: {of optimised code (optimisation G06F8/443)}
- G06F 11/3656: {using a specific debug interface}
- G06F 11/3698: Environments for analysis, debugging or testing of software
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A connection can be made to a processing element of a remotely deployed and live streaming application executed by a first data processing system, the processing element containing at least one operator that processes at least one tuple. As the live streaming application is executed, without slowing or modifying data flow of the live streaming application execution to client devices, a copy of the tuple and a memory dump of state data for a state of the operator can be received, and the tuple can be tracked through a call graph. The state data can be loaded into a local instance of the operator loaded into a debugger. At least a portion of the call graph can be presented to a user, and a flow of the tuple through the call graph based on the state data for the operator can be indicated.

## Claims

### Claim 1

A method comprising:
connecting to a processing element of a remotely deployed and live streaming application executed by a first data processing system, the processing element containing at least one operator that processes at least one tuple;
hooking at least one processing thread of the live streaming application used for execution of the processing element;
as the live streaming application is executed, without slowing or modifying data flow of the live streaming application execution to client devices, receiving a copy of the tuple and a memory dump of state data for a state of the at least one operator while operating on the tuple, and tracking the tuple through a call graph comprising a plurality of nodes and a plurality of edges, each node representing the at least one operator, and each edge connecting a respective pair of the plurality of nodes and representing a function call between the respective pair of the plurality of nodes;
in a debugger hosted on a second data processing system that is remote to the first data processing system, loading, using a processor, the state data for the state of the at least one operator into a local instance of the operator loaded into the debugger by moving or copying the state data into at least one location in memory used by the local instance of the operator; and
presenting, by the debugger, to a user at least a portion of the call graph comprising the plurality of nodes and the plurality of edges, and indicating to the user a flow of the tuple through at least the portion of the call graph based on the state data for the operator.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
receiving at least one user input changing the tuple or the state data for the operator; and
indicating to the user a different flow of the tuple through at least the portion of the call graph resulting from the user input.

### Claim 3 (depends on 2)

The method of claim 2, further comprising:
determining that additional data is required to accurately indicate the different flow of the tuple through at least the portion of the call graph resulting from the user input; and
generating at least one assumption regarding the different flow of the tuple through at least the portion of the call graph;
wherein indicating to the user a flow of the tuple through at least the portion of the call graph further is based on the generated at least one assumption.

### Claim 4 (depends on 2)

The method of claim 2, further comprising:
determining that additional data is required to accurately indicate the different flow of the tuple through at least the portion of the call graph resulting from the user input; and
generating at least one assertion regarding the different flow of the tuple through at least the portion of the call graph;
wherein indicating to the user a flow of the tuple through at least the portion of the call graph further is based on the generated at least one assertion.

### Claim 5 (depends on 4)

The method of claim 4, wherein the at least one assertion is user selected.

### Claim 6 (depends on 1)

The method of claim 1, wherein the state data for the operator comprises all parameters and non-final variables for the tuple while the tuple is operated on by the operator.

### Claim 7 (depends on 1)

The method of claim 1, wherein the debugger performs, using at least the state data for the operator, a reconstruction of at least a portion of the live streaming application containing the at least one operator that performs at least one operation on the at least one tuple.

### Claim 8

A system, comprising:
a processor programmed to initiate executable operations comprising:
connecting to a processing element of a remotely deployed and live streaming application executed by a first data processing system, the processing element containing at least one operator that processes at least one tuple;
hooking at least one processing thread of the live streaming application used for execution of the processing element;
as the live streaming application is executed, without slowing or modifying data flow of the live streaming application execution to client devices, receiving a copy of the tuple and a memory dump of state data for a state of the at least one operator while operating on the tuple, and tracking the tuple through a call graph comprising a plurality of nodes and a plurality of edges, each node representing the at least one operator, and each edge connecting a respective pair of the plurality of nodes and representing a function call between the respective pair of the plurality of nodes;
in a debugger hosted on a second data processing system that is remote to the first data processing system, loading the state data for the state of the at least one operator into a local instance of the operator loaded into the debugger by moving or copying the state data into at least one location in memory used by the local instance of the operator; and
presenting, by the debugger, to a user at least a portion of the call graph comprising the plurality of nodes and the plurality of edges, and indicating to the user a flow of the tuple through at least the portion of the call graph based on the state data for the operator.

### Claim 9 (depends on 8)

The system of claim 8, the executable operations further comprising:
receiving at least one user input changing the tuple or the state data for the operator; and
indicating to the user a different flow of the tuple through at least the portion of the call graph resulting from the user input.

### Claim 10 (depends on 9)

The system of claim 9, the executable operations further comprising:
determining that additional data is required to accurately indicate the different flow of the tuple through at least the portion of the call graph resulting from the user input; and
generating at least one assumption regarding the different flow of the tuple through at least the portion of the call graph;
wherein indicating to the user a flow of the tuple through at least the portion of the call graph further is based on the generated at least one assumption.

### Claim 11 (depends on 9)

The system of claim 9, the executable operations further comprising:
determining that additional data is required to accurately indicate the different flow of the tuple through at least the portion of the call graph resulting from the user input; and
generating at least one assertion regarding the different flow of the tuple through at least the portion of the call graph;
wherein indicating to the user a flow of the tuple through at least the portion of the call graph further is based on the generated at least one assertion.

### Claim 12 (depends on 11)

The system of claim 11, wherein the at least one assertion is user selected.

### Claim 13 (depends on 8)

The system of claim 8, wherein the state data for the operator comprises all parameters and non-final variables for the tuple while the tuple is operated on by the operator.

### Claim 14 (depends on 8)

The system of claim 8, wherein the debugger performs, using at least the state data for the operator, a reconstruction of at least a portion of the live streaming application containing the at least one operator that performs at least one operation on the at least one tuple.

### Claim 15

A computer program product comprising a computer readable storage medium having program code stored thereon, the program code executable by a processor to perform a method comprising:
connecting, by the processor, to a processing element of a remotely deployed and live streaming application executed by a first data processing system, the processing element containing at least one operator that processes at least one tuple;
hooking, by the processor, at least one processing thread of the live streaming application used for execution of the processing element;
as the live streaming application is executed, without slowing or modifying data flow of the live streaming application execution to client devices, receiving, by the processor, a copy of the tuple and a memory dump of state data for a state of the at least one operator while operating on the tuple, and tracking the tuple through a call graph comprising a plurality of nodes and a plurality of edges, each node representing the at least one operator, and each edge connecting a respective pair of the plurality of nodes and representing a function call between the respective pair of the plurality of nodes;
in a debugger hosted on a second data processing system that is remote to the first data processing system, loading, by the processor, the state data for the state of the at least one operator into a local instance of the operator loaded into the debugger by moving or copying the state data into at least one location in memory used by the local instance of the operator; and
presenting, by the debugger, to a user at least a portion of the call graph comprising the plurality of nodes and the plurality of edges, and indicating to the user a flow of the tuple through at least the portion of the call graph based on the state data for the operator.

### Claim 16 (depends on 15)

The computer program product of claim 15, the method further comprising:
receiving at least one user input changing the tuple or the state data for the operator; and
indicating to the user a different flow of the tuple through at least the portion of the call graph resulting from the user input.

### Claim 17 (depends on 16)

The computer program product of claim 16, the method further comprising:
determining that additional data is required to accurately indicate the different flow of the tuple through at least the portion of the call graph resulting from the user input; and
generating at least one assumption regarding the different flow of the tuple through at least the portion of the call graph;
wherein indicating to the user a flow of the tuple through at least the portion of the call graph further is based on the generated at least one assumption.

### Claim 18 (depends on 16)

The computer program product of claim 16, the method further comprising:
determining that additional data is required to accurately indicate the different flow of the tuple through at least the portion of the call graph resulting from the user input; and
generating at least one assertion regarding the different flow of the tuple through at least the portion of the call graph;
wherein indicating to the user a flow of the tuple through at least the portion of the call graph further is based on the generated at least one assertion.

### Claim 19 (depends on 15)

The computer program product of claim 15, wherein the state data for the operator comprises all parameters and non-final variables for the tuple while the tuple is operated on by the operator.

### Claim 20 (depends on 15)

The computer program product of claim 15, wherein the debugger performs, using at least the state data for the operator, a reconstruction of at least a portion of the live streaming application containing the at least one operator that performs at least one operation on the at least one tuple.
