Runtime Application Debugger Stateful Copy
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current debugging techniques for software applications, such as tracing instructions and debuggers, are inefficient and impractical for production environments due to resource consumption, performance overhead, and dependency on application stability, making it difficult to diagnose and reproduce errors, especially synchronization and timing issues.
Innovation Solution
An application debugger that generates a stateful copy of application objects in a debugger memory heap at runtime, allowing independent diagnosis and manipulation without requiring debug events or stable application processes, and enabling optimized execution without memory or performance impacts.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Difficulty of detecting and measuring
If tracing instructions are embedded in the application to provide trace information at runtime, then diagnosis capability is improved, but application size increases and runtime performance deteriorates
Solution Approach 1:
The system separates the diagnosis functionality from the application code by using an external debugger process that attaches to the running application. The application is divided into the production code (running without tracing overhead) and the debugging infrastructure (external debugger that provides diagnosis capabilities). This segmentation allows the application to run at full performance while the external debugger provides trace information and diagnosis capabilities.
Solution Approach 2:
The patent introduces an intermediary debugger process that acts as a mediator between the application and the developer. The debugger attaches to the application process and intercepts/debugs calls to provide trace information without requiring tracing instructions to be embedded in the application code. This intermediary approach enables diagnosis capability while maintaining application performance.
2Difficulty of detecting and measuring
If tracing instructions are embedded in the application to generate trace information, then diagnosis capability is improved, but application size increases
Solution Approach 1:
The patent extracts the tracing and diagnosis functionality from the application code itself and places it in an external debugger process. Instead of embedding tracing instructions within the application, the system uses an external debugger that attaches to the running application and provides diagnosis capabilities. This extraction eliminates the need to increase application size while maintaining full diagnosis capability.
3Difficulty of detecting and measuring
If the application includes debug logic to provide debug events, then debugging capability is improved, but memory consumption increases and runtime performance deteriorates
Solution Approach 1:
The patent uses an intermediary debugger process that attaches to the application and provides debugging capabilities without requiring the application to include debug logic. The external debugger intercepts and debugs calls to provide trace information and manipulate application objects, eliminating the need for the application to allocate additional memory for debug logic while maintaining full debugging capability.
4Difficulty of detecting and measuring
If the application includes debug logic to provide debug events, then debugging capability is improved, but runtime performance deteriorates
Solution Approach 1:
The system segments the debugging functionality into an external process separate from the application. The application runs as pure production code without any debug logic embedded, maintaining optimal runtime performance. The external debugger process provides all debugging capabilities by attaching to the application and using interception techniques, thus separating the performance-critical application code from the debugging infrastructure.
5Reliability
If the application process becomes unstable (e.g., synchronization deadlock or complete failure), then the application stops executing, but the ability to generate trace information ceases
Solution Approach 1:
The patent implements a mechanism where the debugger can create stateful copies of application objects before the application process becomes unstable. The debugger attaches to the running application and continuously maintains copies of critical objects in a stable state, even if the original application process crashes or enters a deadlock. This beforehand cushioning ensures that diagnostic information is preserved and can be analyzed even after the application fails.
Solution Approach 2:
The system uses copying to create stateful replicas of application objects in the debugger process. When the application process becomes unstable, these copies remain intact in the external debugger, allowing continued generation and analysis of trace information. The debugger can manipulate these copies to diagnose issues without being affected by the instability of the original application process.
6Difficulty of detecting and measuring
If a debugger is used to step through the application and examine data at runtime, then diagnosis capability is improved, but the application occupies more memory and execution speed decreases
Solution Approach 1:
The patent uses an intermediary debugger process that attaches to the application and provides diagnosis capabilities without requiring the application itself to occupy additional memory. The external debugger handles all memory-intensive debugging operations (such as maintaining object states and generating trace information) in its own address space, allowing the application to run with minimal memory overhead while full debugging capability is available through the intermediary debugger.
7Difficulty of detecting and measuring
If the application includes debug logic, then debugging capability is improved, but timing characteristics of the application change during execution
Solution Approach 1:
The system segments the debugging functionality into an external process, allowing the application to execute with its original timing characteristics unchanged. The external debugger can observe and measure timing behavior without introducing debug logic that would alter the application's execution flow. This segmentation ensures that timing-critical applications can be debugged without affecting their temporal behavior.
Data Source
AI summary
The present invention accordingly provides an application debugger running in a process of a computer system comprising: a debugger memory heap; and an object copier for generating a stateful copy in the debugger memory heap of an application object at runtime wherein the application object is stored in an application memory heap of an application process.


