N-Way Interoperative Debugging Architecture

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current debugging technologies face challenges in seamlessly integrating native and virtual machine debugging operations, leading to limitations in interoperative debugging across multiple runtime environments within a single debug session, due to differences in abstraction levels and lack of explicit support for code sharing.

Innovation Solution

An extensible debug architecture enables n-way interoperative debugging by using out-of-process operations for execution control and data inspection, allowing simultaneous debugging of code across multiple runtime environments with prioritization of runtime debuggers and compatible communication protocols, ensuring non-interference between different runtime debuggers.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If native debugging is implemented by the operating system using out-of-process operations, then debugging can be performed without cooperation from the debuggee, but the process must be frozen and no code executes inside the process until the OS starts it up again

Engineering Contradiction:
Improvedebugging reliabilityVSAvoidprocess execution efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent segments the debugging architecture into multiple independent runtime debuggers, each responsible for a specific runtime environment (native, managed, interpreter). Each debugger operates independently through out-of-process debugging, avoiding the need to freeze the entire process while maintaining reliable debugging capabilities for each segment.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a communication protocol as an intermediary between multiple runtime debuggers and the debuggee process. This protocol enables coordinated debugging operations without requiring the process to be frozen, allowing debuggers to communicate debug events and coordinate actions while the process remains runnable.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If virtual machine debugging is implemented by the runtime environment using in-process operations, then debugging code can execute inside the process, but the OS has no knowledge of when this type of debugging is occurring and the process is stopped by the runtime environment

Engineering Contradiction:
Improvedebugging code executionVSAvoiddebugging architecture complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent creates a universal debugging architecture where multiple runtime debuggers (native, managed, interpreter) can simultaneously debug the same process using a common communication protocol. Each debugger maintains its specialized in-process or out-of-process debugging capabilities while interoperating through the unified protocol, reducing overall system complexity.

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

Solution Approach 2:

The patent adds a new dimension to debugging by introducing a communication protocol layer that operates between the OS, runtime environments, and debuggers. This protocol dimension enables coordination and information sharing without requiring changes to the underlying debugging implementations, allowing in-process debugging to occur while maintaining OS awareness.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

3Reliability

If managed and native debugging have different sets of debug events and different ways of transitioning between stopped and running states, then each debugging type can be optimized for its specific runtime, but code sharing between managed and native debugging operations is prevented

Engineering Contradiction:
Improvedebugging optimizationVSAvoidcode sharing capability
Core Design Contradiction:
ReliabilityVSAdaptability or versatility

Solution Approach 1:

The patent transforms the debugging architecture by changing the parameter of communication between debuggers from specialized, incompatible protocols to a unified communication protocol. This parameter change enables multiple debugger types to exchange information and coordinate operations while maintaining their specialized debugging optimizations for respective runtime environments.

Inventive Principle:
Principle #35Parameter changes

Solution Approach 2:

The patent introduces dynamic coordination between multiple runtime debuggers through the communication protocol. Debuggers can dynamically transition between stopped and running states based on protocol-synchronized events, allowing each debugger to optimize its debugging operations while maintaining coordinated behavior across different runtime environments.

Inventive Principle:
Principle #15Dynamics

4Adaptability or versatility

If interoperative debugging is implemented with limited mechanisms relying on cooperation between native and virtual machine runtime debuggers, then debugging across multiple runtime environments is possible, but the cooperation is tedious and fragile due to conflicting debugging architecture designs

Engineering Contradiction:
Improvemulti-runtime debugging capabilityVSAvoiddebugging operation simplicity
Core Design Contradiction:
Adaptability or versatilityVSEase of operation

Solution Approach 1:

The patent implements a communication protocol that provides more coordination capability than minimally required, enabling robust interoperative debugging. The protocol handles event synchronization, state coordination, and error management comprehensively, making the cooperation between debuggers systematic and reliable rather than tedious and fragile.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentEP2724235B1N-way runtime interoperative debugging
Publication Date: 2018.12.12 MICROSOFT TECHNOLOGY LICENSING LLC
  • EP2724235B1 patent drawingFigure 1
  • EP2724235B1 patent drawingFigure 2a
  • EP2724235B1 patent drawingFigure 2b

AI summary

Simultaneous debugging of code running in multiple types of runtime environment can be performed by an n-way interoperative debugging environment. Code running within a particular runtime can be debugged simultaneously with a code running within other runtimes within a single process. Out-of-process debugging support is provided for inspection and execution control. A compatible debugger or runtime communication protocol is used. Transitions from one runtime to another runtime can be detected. Exceptions thrown in one runtime can be caught by another runtime. Stepping operations can occur in multiple runtimes. A callstack including frames from multiple runtimes can be walked.