# US 11,307,964 B2 · Multi-level debugger

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

- Number: US 11,307,964 B2
- Document ID: US11307964B2
- Status: Granted
- Kind: B2
- Application number: 16/200,530
- Filed: 2018-11-26
- Published: 2020-05-28
- Granted: 2022-04-19
- Earliest claimed: 2018-11-26
- Assignees: Red Hat Israel, Ltd.
- Applicants: Red Hat Israel, Ltd.
- Inventors: Arie Bregman; David Sariel
- Web page: https://patentgrep.com/patent/US11307964B2

## CPC

- G06F 11/3636: {by tracing the execution of the program}
- G06F 8/42: {Syntactic analysis}
- G06F 11/3648: {using additional hardware}
- G06F 8/31: {Programming languages or programming paradigms}
- G06F 2201/81: Threshold
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A task may be executed using a domain specific language (DSL) debugger, the task including one or more modules. A module debugger associated with a module of the one or more modules of the task may be identified. Task debugging data associated with the execution of the task using the DSL debugger may be transmitted to the identified module debugger. Module debugging data may be received from the identified module debugger. Multi-level debugging data including the task debugging data and the received module debugging data may be generated.

## Claims

### Claim 1

A method, comprising:
executing a task in a domain specific language (DSL) at a DSL server hosting a configuration management system, the task comprising calls to a plurality of modules written in different programming languages, wherein the plurality of modules are hosted by one or more module servers;
determining whether a triggering event has occurred during execution of the task, the triggering event corresponding to an output value for a first module of the task satisfying a threshold;
in response to determining that the triggering event has occurred, inserting a breakpoint into a location of a script of the task, the location of the script corresponding to the first module of the plurality of modules of the task for which the output value satisfied the threshold;
executing the task using a DSL debugger, wherein the DSL debugger generates task debugging data for the task in the DSL;
identifying the breakpoint in the task corresponding to a call to the first module of the plurality of modules of the task;
in response to identifying the breakpoint, identifying, by a processing device, a module debugger on a first module server of the one or more module servers associated with the first module of the plurality of modules of the task, based on a programming language of the first module;
transmitting, to the module server of the one or more module servers corresponding to the identified module debugger, the task debugging data generated by executing the task using the DSL debugger, wherein the task debugging data comprises input values for the first module to be used by the module debugger to execute the first module, a location of the first module, and the programming language of the first module;
receiving, from the module server hosting the identified module debugger, module debugging data and one or more output values of the module to be used for continued execution of the task, wherein the module debugging data is determined in view of the task debugging data associated with the execution of the task; and
generating multi-level debugging data comprising the task debugging data and the received module debugging data.

### Claim 2 (depends on 1)

The method of claim 1, wherein identifying the module debugger associated with the first module of the plurality of modules of the task comprises:
determining a programming language associated with the first module of the plurality of modules of the task; and
identifying the module debugger associated with the first module in view of the determined programming language.

### Claim 3 (depends on 1)

The method of claim 1, wherein the triggering event further comprises at least one of:
an error during a prior execution of the task, or
receiving a request to debug the task.

### Claim 4 (depends on 1)

The method of claim 1, further comprising:
determining whether the task comprises a module breakpoint, wherein identifying the module debugger associated with the first module of the task is in response to determining that the task comprises the module breakpoint.

### Claim 5 (depends on 1)

The method of claim 1, wherein the task comprises a node of an abstract syntax tree.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
determining a second programming language associated with a second module of the plurality of modules of the task;
identifying a second module debugger associated with the second module in view of the determined second programming language;
transmitting, to the identified second module debugger, second task debugging data associated with the execution of the task, wherein the second task debugging data comprises input values for the second module, a location of the second module, and a programming language of the second module; and
receiving, from the identified second module debugger, second module debugging data, wherein the second module debugging data is determined in view of the second task debugging data associated with the execution of the task and wherein the multi-level debugging data further comprises the second task debugging data and the received second module debugging data.

### Claim 7

A system, comprising:
a memory; and
a processing device, operatively coupled to the memory, to:
execute a task using a domain-specific language (DSL) at a DSL server hosting a configuration management system, the task comprising calls to a plurality of modules written in different programming languages, wherein the plurality of modules are hosted by one or more module servers;
determine whether a triggering event has occurred during execution of the task, the triggering event corresponding to an output value for a first module of the plurality of modules of the task satisfying a threshold;
insert a breakpoint into a location of a script of the task, the location of the script corresponding to the module of the task for which the output value satisfied the threshold;
in response to determining that the triggering event has occurred during execution of the task, execute the task using a DSL debugger to generate task debugging data for the task in the DSL;
identify the breakpoint in the task corresponding to a call to the first module of the plurality of modules of the task;
in response to identifying the breakpoint, transmit the generated task debugging data to a first module server of one or more module servers hosting a module debugger associated with the first module of the plurality of modules, wherein the task debugging data comprises input values for the first module to be used by the module debugger to execute the module, a location of the first module, and a programming language of the first module;
receive, from the module server hosting the module debugger, module debugging data and one or more output values of the first module to be used for continued execution of the task; and
generate multi-level debugging data comprising the generated task debugging data and the received module debugging data.

### Claim 8 (depends on 7)

The system of claim 7, wherein to transmit the generated task debugging data to the module debugger associated with the first module of the plurality of modules, the processing device is further to:
determine a programming language associated with the first module of the plurality of modules;
identify the module debugger in view of the determined programming language of the first module of the plurality of modules; and
transmit the generated task debugging data to the identified module debugger.

### Claim 9 (depends on 7)

The system of claim 7, the triggering event comprises at least one of: an error during the execution of the task using the DSL, receiving a request to debug the task, or a parameter associated with the task satisfying a threshold during the execution of the task using the DSL.

### Claim 10 (depends on 7)

The system of claim 7, wherein the processing device is further to:
upon determining that the triggering event has occurred during the execution of the task, insert a module breakpoint in the task in view of the occurrence of the triggering event.

### Claim 11 (depends on 7)

The system of claim 7, wherein the task comprises a node of an abstract syntax tree.

### Claim 12 (depends on 7)

The system of claim 7, wherein the processing device is further to:
transmit second task debugging data to a second module debugger associated with a second module of the plurality of modules; and
receive, from the second module debugger, second module debugging data in view of the second task debugging data, wherein the generated multi-level debugging data further comprises the received second module debugging data.

### Claim 13

A non-transitory computer-readable storage medium including instructions that, when executed by a processing device, cause the processing device to:
execute a task in a domain specific language (DSL) at a DSL server hosting a configuration management system, the task comprising calls to a plurality of modules written in different programming languages, wherein the plurality of modules are hosted by one or more module servers;
determine whether a triggering event has occurred during execution of the task, the triggering event corresponding to an output value for a first module of the task satisfying a threshold;
in response to determining that the triggering event has occurred, insert a breakpoint into a location of a script of the task, the location of the script corresponding to the first module of the task for which the output value satisfied the threshold;
execute the task using a DSL debugger, wherein the DSL debugger generates task debugging data for the task in the DSL;
identify the breakpoint in the task corresponding to a call to the first module of the plurality of modules of the task;
in response to identifying the breakpoint, identify, by the processing device, a module debugger on a first module server of the one or more module servers associated with the first module of the plurality of modules of the task, based on a programming language of the first module;
transmit, to the identified module debugger, task debugging data generated by executing the task using the DSL debugger, wherein the task debugging data comprises input values for the first module of the plurality of modules of the task to be used by the module debugger to execute the first module, a location of the first module, and the programming language of the first module;
receive, from the module server hosting the identified module debugger, module debugging data and one or more output values of the first module to be used for continued execution of the task, wherein the module debugging data is determined in view of the task debugging data associated with the execution of the task; and
generate multi-level debugging data comprising the task debugging data and the received module debugging data.

### Claim 14 (depends on 13)

The non-transitory computer-readable storage medium of claim 13, wherein to identify the module debugger associated with the first module of the plurality of modules of the task, the processing device is further to:
determine a programming language associated with the first module of the plurality of modules of the task; and
identify the module debugger associated with the first module in view of the determined programming language.

### Claim 15 (depends on 13)

The non-transitory computer-readable storage medium of claim 13, wherein the triggering event comprises at least one of:
an error during a prior execution of the task, or
receiving a request to debug the task.

### Claim 16 (depends on 13)

The non-transitory computer-readable storage medium of claim 13, wherein the processing device is further to:
determine whether the task comprises a module breakpoint, wherein the processing device is to identify the module debugger associated with the first module of the task in response to determining that the task comprises the module breakpoint.

### Claim 17 (depends on 13)

The non-transitory computer-readable storage medium of claim 13, wherein the processing device is further to:
determine a second programming language associated with a second module of the plurality of modules of the task;
identify a second module debugger associated with the second module in view of the determined second programming language;
transmit, to the identified second module debugger, second task debugging data associated with the execution of the task; and
receive, from the identified second module debugger, second module debugging data, wherein the second module debugging data is determined in view of the second task debugging data associated with the execution of the task and wherein generating the multi-level debugging data further comprises the second task debugging data and the received second module debugging data.
