Non-destructive Add-in Debugging via Isolated Environment

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional debugging methods for add-ins hosted by applications like Microsoft Excel and Word are non-destructive, leading to issues such as arbitrary termination of the host application, inability to refresh the host application state, and limited interaction with the host application during debugging.

Innovation Solution

A non-destructive debugging system that loads add-ins into an isolated environment, allowing them to be debugged without affecting the host application, enabling the host application to refresh itself and allowing developers to interact with it during debugging sessions.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If the debugger attaches to the host application process to debug the add-in, then the add-in can be debugged, but the host application cannot be stopped arbitrarily without causing data loss

Engineering Contradiction:
Improvedata loss preventionVSAvoiddebugging operation
Core Design Contradiction:
ReliabilityVSEase of operation

Solution Approach 1:

The system segments the debugging process by introducing a separate debugee controller that can independently control the add-in's execution state without affecting the host application process. This allows the debugger to attach to and control the add-in separately, enabling arbitrary stopping during debugging while the host application continues running normally, thus preventing data loss while maintaining ease of debugging operation.

Inventive Principle:
Principle #1Segmentation

2Reliability

If the debugger stops the add-in execution at a breakpoint, then debugging can be performed, but the host application state cannot be refreshed

Engineering Contradiction:
Improvehost application state refreshVSAvoiddebugging visibility
Core Design Contradiction:
ReliabilityVSEase of operation

Solution Approach 1:

The debugee controller acts as an intermediary between the debugger and the add-in execution. It maintains the ability to refresh the host application state even when the add-in is stopped at a breakpoint, while still allowing the debugger to control and inspect add-in code execution. This intermediary enables both state refresh capability and debugging visibility simultaneously.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Adaptability or versatility

If the add-in runs in the host application process, then the add-in can access host functionality, but stopping the add-in debugger terminates the host application

Engineering Contradiction:
Improvehost application accessVSAvoidhost application stability
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The system segments control authority by introducing a debugee controller that separately manages the add-in's debugging state. This allows the add-in to continue running within the host application process with full access to host functionality, while the debugger can independently control and stop the add-in execution without terminating the host application, thus maintaining both adaptability and stability.

Inventive Principle:
Principle #1Segmentation

4Ease of operation

If the developer interacts with the host application during debugging, then usability is improved, but the debugging state may become inconsistent

Engineering Contradiction:
Improvedeveloper interactionVSAvoiddebugging state consistency
Core Design Contradiction:
Ease of operationVSReliability

Solution Approach 1:

The debugee controller serves as an intermediary that manages the interaction between the debugger and the add-in execution environment. It allows the developer to interact with the host application during debugging while maintaining consistent debugging state by coordinating these interactions through the controller, which tracks and manages the add-in's execution state separately from host application state.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS7716650B2Non-destructive debugging for add-ins
Publication Date: 2010.05.11 MICROSOFT TECHNOLOGY LICENSING LLC
  • US7716650B2 patent drawing
  • US7716650B2 patent drawing
  • US7716650B2 patent drawing

AI summary

Methods and systems for debugging add-ins using a non-destructive approach. Add-ins are hosted, not stand-alone components, that run in a host application. The add-ins are loaded into an isolated environment so they can be debugged and stopped without affecting the host application. This prevents termination of the host application at arbitrary times. In addition, the host application can refresh itself when an add-in is stepped through in the debugger. The present invention also allows the add-in developer to interact with the host application during a debugging session even when the add-in is stopped at a breakpoint.