Runtime Diagnostics Injection for Server Application Debugging

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current approaches for detecting and correcting errors or bugs in server applications lack the ability to provide automatic and immediate actionable diagnostics information while the applications are running, requiring developers to search through extensive data and display diagnostics information in a separate context from the server application, making it cumbersome to diagnose issues.

Innovation Solution

Injecting executable code with event triggers and action routines into the application server to collect and include diagnostics information within response messages, allowing it to be displayed within the same context as the user device application, such as a web browser, and providing real-time feedback on memory consumption and SQL query analysis.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If developers use current diagnostic tools to detect and correct errors in server applications, then diagnostic information can be obtained, but the information is displayed in a separate context from the server application making it cumbersome to diagnose issues

Engineering Contradiction:
Improveease of diagnosing issuesVSAvoidcontext separation
Core Design Contradiction:
Ease of operationVSLoss of information

Solution Approach 1:

The patent merges the diagnostic information display with the server application context by injecting executable code that causes diagnostic data to be rendered within the same web page or user interface context as the application being diagnosed. This integration eliminates the need for separate diagnostic windows or tools, allowing developers to view application content and diagnostic information (such as memory snapshots, SQL query analysis, and performance metrics) in a unified interface, thereby improving ease of operation while preserving contextual information.

Inventive Principle:
Principle #5Merging (Combining)

2Reliability

If developers manually search through extensive data to find diagnostic information, then comprehensive data is available, but the time required to diagnose issues increases significantly

Engineering Contradiction:
Improvecompleteness of diagnostic dataVSAvoidtime to diagnose issues
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent extracts only the most relevant diagnostic information (such as memory consumption data, SQL query performance metrics, and error stack traces) from the extensive available data and presents it in a focused, organized manner within the application context. The injected executable code selectively captures and filters diagnostic data based on predefined criteria, extracting key insights without requiring developers to manually search through all available data, thus maintaining data reliability while reducing diagnostic time.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent performs preliminary actions by pre-configuring the injected executable code to automatically capture, filter, and organize diagnostic information before it needs to be analyzed. The system proactively monitors application behavior, pre-processes diagnostic data into meaningful formats (such as structured memory snapshots and query performance reports), and makes this processed information immediately available in the application context, eliminating the need for manual data gathering and preparation steps.

Inventive Principle:
Principle #10Preliminary action

3Measurement precision

If memory snapshots are taken for diagnostic purposes, then memory consumption analysis is possible, but manual comparison of snapshots is required which reduces productivity

Engineering Contradiction:
Improvememory consumption analysisVSAvoiddebugging efficiency
Core Design Contradiction:
Measurement precisionVSProductivity

Solution Approach 1:

The patent implements automated feedback mechanisms that compare memory snapshots and provide immediate diagnostic feedback to developers. The injected executable code automatically captures memory snapshots at relevant points in application execution, compares them using predefined criteria, and generates feedback information (such as memory leak detection, allocation patterns, and consumption trends) that is directly displayed in the application context. This automated feedback loop maintains precise memory measurement capabilities while significantly improving debugging productivity by eliminating manual comparison work.

Inventive Principle:
Principle #23Feedback

4Productivity

If executable code is injected into the application server to collect diagnostics information, then real-time diagnostics are achieved, but the complexity of the application server increases

Engineering Contradiction:
Improvereal-time diagnostics capabilityVSAvoidapplication server complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent employs a universal injected executable code structure that can perform multiple diagnostic functions (memory monitoring, SQL query analysis, performance tracking, and error detection) through a single integrated mechanism. The injected code is designed to be platform-independent and application-agnostic, capable of adapting to different server environments and application types without requiring custom implementation for each case. This multi-functionality approach achieves comprehensive real-time diagnostics capability while minimizing the increase in application server complexity by using a standardized, versatile solution rather than multiple specialized components.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS10496517B2System and method for providing runtime diagnostics of executing applications
Publication Date: 2019.12.03 ZEROTURNAROUND
  • US10496517B2 patent drawing
  • US10496517B2 patent drawing
  • US10496517B2 patent drawing

AI summary

A system and method that provides runtime diagnostics information of server applications executing on application servers of a server system. At class load time, the system injects executable software code that creates and displays the diagnostics information without necessarily having to stop and restart the executing server application. In response to user applications on user devices sending request messages for content from the server application, the system injects executable code into the application server that collects the diagnostics information, produces display components, and includes the diagnostics information within the display components. The server application then includes the display components and the requested content in response messages sent to the user devices. Preferably, the diagnostics information is presented in the same display context on the user device as the requested content, such as pages within a web browser. In examples, the diagnostics information includes enhanced call stack trace and memory profilers.