Substitute Clock for Reactive Application Debugging

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Debugging reactive applications becomes increasingly complex as the number of components increases, often resulting in false timeouts during debugging due to the suspension of execution by debuggers, which can mask actual errors.

Innovation Solution

A system that replaces the system clock of a reactive application with a substitute clock, pausing and resuming it to avoid or intentionally cause timeouts, allowing for precise control and error identification during debugging.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If a debugger suspends execution of a reactive application during debugging, then developers can inspect execution states, but false timeouts occur due to the suspension masking actual errors

Engineering Contradiction:
Improvedebugging accuracyVSAvoidtimeout accuracy
Core Design Contradiction:
Measurement precisionVSReliability

Solution Approach 1:

The patent introduces a substitute clock as an intermediary between the debugger and the reactive application's system clock. This substitute clock allows the debugger to suspend execution without affecting the application's timeout mechanisms, as the substitute clock continues to advance independently. This resolves the contradiction by mediating between the debugging suspension requirement and the timeout accuracy requirement.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent segments the clocking function into two independent components: the debugger's execution control (suspend/resume) and the application's timeout mechanism (substitute clock). By separating these functions, the debugger can suspend execution for inspection while the substitute clock continues to track time for timeout operations, preventing false timeouts while maintaining debugging accuracy.

Inventive Principle:
Principle #1Segmentation

2Adaptability or versatility

If the number of components in a system increases, then the system can perform more tasks cooperatively, but debugging complexity increases

Engineering Contradiction:
Improvesystem functionalityVSAvoiddebugging complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The substitute clock acts as a mediator that simplifies debugging in multi-component systems by providing a unified time-tracking mechanism that is independent of execution suspension. This allows developers to debug complex multi-component reactive applications without the confusion of false timeouts, effectively reducing debugging complexity while maintaining system versatility.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Reliability

If the system clock is replaced with a substitute clock during debugging suspension, then false timeouts are prevented, but additional system complexity is introduced

Engineering Contradiction:
Improvetimeout accuracyVSAvoiddebugger complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent creates a copy of the clocking function through the substitute clock, which replicates the time-tracking behavior needed for timeout operations. This copy is simpler to manage during debugging than the original system clock, as it can be independently controlled and does not require actual time passage. The substitute clock copying approach prevents false timeouts while adding minimal complexity to the debugger.

Inventive Principle:
Principle #26Copying

Data Source

PatentUS10229033B2System, method and apparatus for debugging of reactive applications
Publication Date: 2019.03.12 RED HAT INC
  • US10229033B2 patent drawing
  • US10229033B2 patent drawing
  • US10229033B2 patent drawing

AI summary

A debugger executes on a computer system to receive a first debugging command from a client, where the first debugging command sets a first instruction in the reactive application to suspend execution of the reactive application, and where during execution of the reactive application the first instruction is triggered which suspends execution of the reactive application. Responsive to the execution of the reactive application being suspended, a system clock of the reactive application is replaced with a substitute clock and the substitute clock is paused. The debugger then receives a second debugging command, where the second debugging command triggers a second instruction in the reactive application to continue execution of the reactive application. Responsive to the execution of the reactive application being continued, clocking of the substitute clock is continued.