Tracepoint Visualization Using Historic Execution State Data

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Debugging undesired software behavior in applications is challenging due to its seemingly random triggers and difficulty in reproducing and identifying the root cause, leading to inefficient use of diagnostic code and disruptive re-deployment processes, especially in large and production environments.

Innovation Solution

Utilizing historic execution state information to visualize tracepoint data, allowing for efficient and flexible monitoring and refinement of application code by correlating execution state information with code and associating tracepoints to log behavior without interrupting execution, enabling better debugging and issue resolution.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Difficulty of detecting and measuring

If diagnostic code is inserted into application code to generate diagnostic information, then debugging capability is improved, but application performance deteriorates and storage resources are consumed

Engineering Contradiction:
Improvedebugging capabilityVSAvoidapplication performance
Core Design Contradiction:
Difficulty of detecting and measuringVSProductivity

Solution Approach 1:

A tracepoint system acts as an intermediary between the application code and diagnostic information generation. Instead of embedding diagnostic code directly in the application, tracepoints are set at specific locations to capture execution state information. This intermediary approach enables debugging without the performance penalty of embedded diagnostic code, as the tracepoint mechanism is optimized to minimize overhead.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system creates a copy of the execution state information at tracepoints rather than continuously generating diagnostic data. By capturing snapshots of program state at specific points and storing them for later analysis, the system provides debugging capability without the continuous performance overhead of active diagnostic code generation.

Inventive Principle:
Principle #26Copying

2Difficulty of detecting and measuring

If diagnostic code is added to application code before deployment to identify undesired behavior, then debugging information is obtained, but re-deployment becomes time consuming and disruptive

Engineering Contradiction:
Improveundesired behavior detectionVSAvoidre-deployment time
Core Design Contradiction:
Difficulty of detecting and measuringVSLoss of time

Solution Approach 1:

The system performs preliminary actions by setting tracepoints and collecting execution state information during normal application operation without requiring re-deployment. The tracepoint infrastructure is established once, and subsequent debugging investigations can be conducted by analyzing the collected execution data, eliminating the need for repeated re-deployment cycles.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The tracepoint system is dynamic and flexible, allowing investigators to add, remove, or modify tracepoints without re-compiling or re-deploying the application. This dynamic capability enables adaptive debugging where tracepoints can be strategically placed based on runtime observations, and changes can be made by simply modifying the tracepoint configuration rather than the application code itself.

Inventive Principle:
Principle #15Dynamics

3Ease of operation

If developers use traditional debugging methods with breakpoints and step-through execution, then code inspection is possible, but execution performance is interrupted and debugging time increases

Engineering Contradiction:
Improvecode inspection capabilityVSAvoiddebugging time
Core Design Contradiction:
Ease of operationVSLoss of time

Solution Approach 1:

The system creates a separate analysis environment that copies and replays execution data without interrupting the original application execution. By reconstructing execution traces from collected state information, developers can inspect code behavior in a virtualized environment, eliminating the need to interrupt live execution for debugging analysis.

Inventive Principle:
Principle #26Copying

Data Source

PatentEP3921734B1Using historic execution data to visualize tracepoints
Publication Date: 2024.03.06 MICROSOFT TECHNOLOGY LICENSING LLC
  • EP3921734B1 patent drawingFigure 1
  • EP3921734B1 patent drawingFigure 2A
  • EP3921734B1 patent drawingFigure 2B

AI summary

Techniques are provided to use historic execution state information to visualize tracepoint data. For example, historic execution state information corresponding to an application's previous execution is accessed. This historic execution state information was collected while the application was executing. After correlating the historic execution state information to the application's code, a tracepoint is associated with a portion of the code. Consequently, when the code is replayed based on the historic execution state information, the tracepoint causes a behavior of that code portion to be logged while the code is replayed uninterrupted. The code is then actually replayed based on the historic execution state information. During the replay, the tracepoint causes the behavior of the code portion to be logged. The logged behavior is visualized on a user interface.