Data Breakpoints on Object-Oriented Properties

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Debugging tools face challenges in accurately and efficiently setting breakpoints on properties in object-oriented programming languages, particularly when properties are implemented with special methods and involve complex conditional code, limiting the ability to suspend program execution upon data value changes.

Innovation Solution

The implementation of data breakpoint functionality that identifies constituent data locations (CDLs) within a function, allowing for the suspension of execution upon data value changes at these locations, rather than relying on instruction-based breakpoints, using a combination of static data flow analysis, interpretation, and disassembly to set data breakpoints on properties and other functions.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If instruction-based breakpoints are used to suspend program execution, then the debugging tool can stop execution at specified locations, but it cannot accurately detect data value changes at constituent data locations

Engineering Contradiction:
Improvebreakpoint detection accuracyVSAvoiddebugging control capability
Core Design Contradiction:
Measurement precisionVSEase of operation

Solution Approach 1:

The patent introduces an intermediary mechanism that monitors data values at constituent data locations (CDLs) without requiring instruction-based breakpoints. This intermediary layer detects when data values at CDLs change and triggers suspension of program execution accordingly, enabling accurate detection of data value changes while maintaining debugging control capability

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent replaces the traditional mechanical instruction-based breakpoint system with a data-value-based monitoring system. Instead of relying on the program counter reaching a specific instruction address, the system substitutes this with monitoring of data values at CDLs, using data flow analysis to identify when constituent data locations are modified, thereby achieving more precise breakpoint detection

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

2Measurement precision

If data breakpoint functionality is implemented to suspend execution upon data value changes, then debugging accuracy is improved, but system complexity increases due to static data flow analysis, interpretation, and disassembly requirements

Engineering Contradiction:
Improvedebugging accuracyVSAvoidbreakpoint setting mechanism
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent applies preliminary action by performing static data flow analysis, interpretation, and disassembly before the actual debugging session to pre-identify constituent data locations (CDLs) of functions. This preliminary processing creates a data structure that maps functions to their CDLs, which is then used during debugging to quickly set data breakpoints without requiring complex real-time analysis, thus reducing runtime system complexity while maintaining high debugging accuracy

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent segments the debugging system into distinct functional components: a static analysis phase that identifies CDLs, an interpretation phase that understands function behavior, and a disassembly phase that analyzes code structure. This segmentation allows each component to specialize in its specific task, making the overall complex system more manageable and efficient by dividing the problem into smaller, independent parts

Inventive Principle:
Principle #1Segmentation

3Loss of information

If constituent data locations are identified and monitored, then internal program state information becomes more accessible, but the time required to set up and manage breakpoints increases

Engineering Contradiction:
Improveprogram state accessibilityVSAvoidbreakpoint setup time
Core Design Contradiction:
Loss of informationVSLoss of time

Solution Approach 1:

The patent performs preliminary static data flow analysis to pre-identify all constituent data locations (CDLs) of functions before the debugging session begins. This creates a pre-computed data structure that maps functions to their CDLs, allowing the debugger to quickly access and monitor internal program state information without performing time-consuming analysis during the debugging session, thus reducing breakpoint setup time while improving program state accessibility

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS11392482B2Data breakpoints on certain kinds of functions
Publication Date: 2022.07.19 MICROSOFT TECHNOLOGY LICENSING LLC
  • US11392482B2 patent drawing
  • US11392482B2 patent drawing
  • US11392482B2 patent drawing

AI summary

To set data breakpoints on properties and certain other functions, constituent data locations (CDLs) that can contribute to computation of the property value or other function result are identified, and respective constituent data breakpoints are added at one or more CDLs by data breakpoint adder code. Each constituent data breakpoint will suspend execution of an inspectable software in response to occurrence of a CDL data entry. The CDLs are identified by CDL identifier code using static data flow analysis, enhanced interpretation, or disassembly, with recursion as appropriate. Kernel or runtime routines, and other routines designated as known, can be excluded from the CDL search. Data locations marked read-only, or that are effectively read-only because they will not be written, can also be excluded. The resulting data breakpoint functionality makes internal program state information available, thus facilitating computing system accuracy, flexibility, security, speed, memory usage efficiency, and other functional characteristics.