Snapshot Debugging System with Selective State Capture

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current debugging technologies lack an efficient method to capture and analyze the state of a computer application at specific events, such as errors, to help programmers understand and reproduce issues effectively.

Innovation Solution

A tracing and debugging system that takes snapshots of an application's state in response to events, storing them for later analysis, which includes call stacks, source code, local and global variables, and metadata, allowing for customizable data collection and storage in separate databases for sensitive and non-sensitive data.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of information

If a snapshot of the entire application state is captured at every error event, then debugging information completeness is improved, but storage requirements and system overhead increase

Engineering Contradiction:
Improvedebugging information completenessVSAvoidstorage requirements
Core Design Contradiction:
Loss of informationVSQuantity of substance

Solution Approach 1:

The patent extracts and stores only the specific subset of application state relevant to debugging (call stacks, variable values, memory dumps) rather than capturing the entire application state. This selective extraction reduces storage requirements while maintaining debugging information completeness.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The application state is segmented into distinct components (call stacks, local variables, global variables, memory regions) that can be independently captured and stored. This segmentation allows the system to capture only the necessary debugging information without storing redundant data, thereby reducing overall storage requirements.

Inventive Principle:
Principle #1Segmentation

2Difficulty of detecting and measuring

If detailed snapshot data including call stacks and source code is collected, then debugging capability is improved, but data sensitivity and security risks increase

Engineering Contradiction:
Improvedebugging capabilityVSAvoiddata sensitivity
Core Design Contradiction:
Difficulty of detecting and measuringVSObject-affected harmful factors

Solution Approach 1:

The patent segments snapshot data into sensitive components (source code, cryptographic keys, personal information) and non-sensitive components (call stack structures, variable types). This segmentation enables selective handling of sensitive data through encryption or redaction while maintaining full debugging capability for non-sensitive portions.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces an intermediary layer (snapshot configuration file and filtering mechanism) that mediates between the debugging system and sensitive data. This intermediary selectively excludes or protects sensitive information from being captured in snapshots, thereby reducing security risks while preserving debugging capability for essential information.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Measurement precision

If the application is paused to capture complete snapshot data, then debugging accuracy is improved, but execution time and productivity are reduced

Engineering Contradiction:
Improvedebugging accuracyVSAvoidexecution time
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The patent implements partial action by capturing only the essential debugging information (call stacks, key variable values) rather than pausing to capture complete application state. This partial capture approach maintains sufficient debugging accuracy while minimizing execution time loss by avoiding full application state serialization.

Inventive Principle:
Principle #16Partial or excessive action

Solution Approach 2:

The patent performs preliminary actions by pre-identifying and caching frequently accessed debugging information (such as symbol tables and source code mappings) before snapshots are needed. This preliminary preparation reduces the time required to capture accurate snapshot data during actual debugging events, thereby improving debugging accuracy without proportionally increasing execution time loss.

Inventive Principle:
Principle #10Preliminary action

4Ease of operation

If snapshot configuration is made customizable to include/exclude data elements, then flexibility and ease of operation are improved, but system complexity increases

Engineering Contradiction:
ImproveflexibilityVSAvoidsystem complexity
Core Design Contradiction:
Ease of operationVSDevice complexity

Solution Approach 1:

The patent implements a universal snapshot configuration system that can handle multiple data types (call stacks, variables, memory) and multiple exclusion criteria (sensitivity, size, performance impact) through a single standardized interface. This multi-functional configuration system provides flexibility for customizing snapshots while avoiding the need for separate complex systems for each data type.

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

Data Source

PatentUS9021444B2Combined performance tracer and snapshot debugging system
Publication Date: 2015.04.28 MICROSOFT TECHNOLOGY LICENSING LLC
  • US9021444B2 patent drawing
  • US9021444B2 patent drawing
  • US9021444B2 patent drawing

AI summary

A tracing and debugging system may collect both performance related tracer data and snapshot data. The tracer data may contain aggregated performance and operational data, while the snapshot data may contain call stack, source code, and other information that may be useful for debugging and detailed understanding of an application. The snapshot data may be stored in a separate database from the tracer data, as the snapshot data may contain data that may be private or sensitive, while the tracer data may be aggregated information that may be less sensitive. A debugging user interface may be used to access, display, and browse the stored snapshot data.