Proxy Decoder for Debugging Object Abstractions

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Debugging objects in modern software runtime environments is challenging due to the complexity of executing code within the application being debugged, which can alter the environment, leading to issues like invisible property values, potential corruption, deadlocks, and loss of abstraction details.

Innovation Solution

A debugger employing an out-of-process inspection model with a proxy decoder and abstraction transformation to decode physical object information into logical views, allowing for accurate modeling of original abstractions and transparent inspection of proxied objects without executing code within the debuggee process.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If code execution is performed within the context of the application being debugged to debug objects, then debugging functionality is achieved, but the environment may be changed, causing side effects, corruption, or deadlocks

Engineering Contradiction:
Improvedebugging reliabilityVSAvoidenvironmental side effects
Core Design Contradiction:
ReliabilityVSObject-affected harmful factors

Solution Approach 1:

The patent introduces a proxy object as an intermediary between the debugger and the actual runtime object. The proxy sits in the debugger's process space and forwards debugging requests to the remote object without executing code in the debuggee's process context. This mediator approach allows the debugger to inspect and manipulate object state remotely, avoiding direct code execution in the application being debugged and thus preventing environmental side effects, corruption, or deadlocks while maintaining full debugging functionality

Inventive Principle:
Principle #24Intermediary (Mediator)

2Ease of operation

If abstractions are created to hide system complexity, then ease of operation is improved, but debugging becomes more difficult as abstractions obscure physical object information

Engineering Contradiction:
Improveease of useVSAvoiddebugging difficulty
Core Design Contradiction:
Ease of operationVSDifficulty of detecting and measuring

Solution Approach 1:

The patent segments the object representation into two distinct layers: the logical abstraction layer (proxy object with high-level interface) and the physical implementation layer (remote object with actual state). The debugger can selectively access either layer depending on the debugging needs. This segmentation allows developers to debug at the appropriate level of abstraction without being forced to understand or manipulate the underlying complexity, thus maintaining ease of operation while enabling effective debugging

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The proxy object serves as an intermediary that bridges the abstraction layer and the physical object layer. It maintains the logical view for normal operation while providing a window into the physical state for debugging purposes. The proxy decodes and translates between the abstract interface and the actual object representation, allowing developers to inspect physical object information without breaking the abstraction barrier, thus resolving the contradiction between ease of use and debugging difficulty

Inventive Principle:
Principle #24Intermediary (Mediator)

3Adaptability or versatility

If proxies are used to represent remote objects, then adaptability across process boundaries is improved, but objects become opaque and harder to diagnose

Engineering Contradiction:
Improvecross-process compatibilityVSAvoidobject visibility
Core Design Contradiction:
Adaptability or versatilityVSLoss of information

Solution Approach 1:

The proxy object acts as an intermediary that maintains adaptability for cross-process communication while simultaneously providing visibility into the remote object's state. The proxy implements the same interface as the remote object, ensuring compatibility and adaptability across process boundaries. At the same time, the proxy exposes the physical object information to the debugger, preventing information loss. This dual role resolves the contradiction by allowing the proxy to be both an adaptive interface and a transparent window into the remote object

Inventive Principle:
Principle #24Intermediary (Mediator)

4Measurement precision

If the debugger inspects objects in the debuggee process context, then accurate object state is obtained, but the debuggee environment may be corrupted or altered

Engineering Contradiction:
Improveobject state accuracyVSAvoidenvironmental corruption
Core Design Contradiction:
Measurement precisionVSObject-generated harmful factors

Solution Approach 1:

The proxy serves as a safe intermediary that enables accurate object state inspection without direct access to the debuggee's process context. The proxy retrieves and caches the object state information from the remote process through controlled communication mechanisms, then presents this information locally in the debugger's process space. This approach maintains measurement precision by obtaining actual object state data while avoiding environmental corruption by preventing direct manipulation of the debuggee's memory space or execution context

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS9262298B2Debugging object abstractions
Publication Date: 2016.02.16 MICROSOFT TECHNOLOGY LICENSING LLC
  • US9262298B2 patent drawing
  • US9262298B2 patent drawing
  • US9262298B2 patent drawing

AI summary

The claimed subject matter provides for systems and/or methods for debugging a computer-executable file. The computer-executable file may be executing in a first runtime environment and located in a first process. The file may further comprise on object having a proxy in that first runtime environment. One method embodiment comprises the steps of debugging said computer-executable file; detecting a proxy for an object called by said file; decoding said proxy to obtain physical information regarding said object; returning said physical object information; and transforming said physical object information into logical object information. In addition, one embodiment of a system is provided that comprising a debugger, said debugger debugging client code; a proxy decoder, said proxy decoder providing information to said debugger about the object pointed by said proxy; and an abstraction transformation, said abstraction transformation transforming physical expressions of a proxy into higher level logical expressions.