Compressed Program Recording via Virtual Processor Simulation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Debugging complex software programs is challenging due to the overwhelming volume of data generated by conventional tracing methods, which can overwhelm bandwidth and storage capacity, especially for programs that run for extended periods or are highly complex.

Innovation Solution

Implementing compression techniques during program execution recording, such as predicting memory values and using key frames, summarization indices, and multi-processor synchronization, to reduce the size of the recording and enable efficient playback and analysis.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If conventional tracing methods are used to record program execution, then complete program state information is captured, but the volume of data generated overwhelms bandwidth and storage capacity

Engineering Contradiction:
Improvecompleteness of program state informationVSAvoidvolume of recording data
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The patent extracts only the essential and changing program state information for recording, rather than capturing complete program state. This selective extraction reduces data volume while maintaining debugging effectiveness by focusing on relevant state changes.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

Instead of recording complete program state and then filtering, the patent inverts the approach by recording only differential state information and reconstructing complete state during playback. This reversal significantly reduces the amount of data that needs to be stored and transmitted.

Inventive Principle:
Principle #13The other way round (Inversion)

2Measurement precision

If complete program state is recorded for every execution step, then accurate debugging information is available, but storage capacity and bandwidth are overwhelmed

Engineering Contradiction:
Improveaccuracy of debugging informationVSAvoidstorage capacity requirements
Core Design Contradiction:
Measurement precisionVSVolume of stationary object

Solution Approach 1:

The patent performs preliminary compression of program state information during the recording phase, storing only differential data. During playback, the system reconstructs complete program state by combining recorded differential information with baseline state, achieving both storage efficiency and debugging accuracy.

Inventive Principle:
Principle #10Preliminary action

3Reliability

If all memory values are recorded explicitly, then complete memory state is captured, but the recording size increases significantly

Engineering Contradiction:
Improvecompleteness of memory stateVSAvoidrecording size
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The patent uses virtual processor simulation to copy and reconstruct memory state during playback rather than storing all memory values explicitly. The virtual processor simulates program execution and regenerates memory state from the recorded differential information, achieving complete memory state capture with minimal storage requirements.

Inventive Principle:
Principle #26Copying

Data Source

PatentUS7620938B2Compressed program recording
Publication Date: 2009.11.17 MICROSOFT TECHNOLOGY LICENSING LLC
  • US7620938B2 patent drawing
  • US7620938B2 patent drawing
  • US7620938B2 patent drawing

AI summary

Program execution can be monitored and recorded for later playback. Certain state changes that can be predicted via a virtual processor during playback need not be recorded, so a compressed recording can be stored. To facilitate random access with respect to time during playback, key frames can be stored within the compressed recording. An index mechanism can associate key frames with particular memory addresses. Additionally, a snapshot of values for memory addresses can be used to further facilitate determining the value of a memory address without having to simulate execution. Multiprocessor executions can be supported, and playback can be done on a machine type different from that on which recording took place.