Finite State Machine Debugger for Automated Breakpoint Sequences

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Debuggers require manual intervention to suspend program execution at complex breakpoints, limiting the efficiency of debugging operations.

Innovation Solution

A finite state machine is used to control the debugger, allowing automatic suspension of execution based on a sequence of breakpoints, enabling more complex conditions to be met without developer intervention.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Extent of automation

If manual intervention is used to suspend program execution at breakpoints, then the debugger can pause execution for developer inspection, but the debugging process requires continuous developer attention and cannot automatically handle complex breakpoint sequences

Engineering Contradiction:
Improveautomatic suspension of executionVSAvoidcomplexity of breakpoint control
Core Design Contradiction:
Extent of automationVSDevice complexity

Solution Approach 1:

The debugger is configured to automatically suspend execution at breakpoints without requiring continuous developer intervention. The system serves itself by autonomously tracking breakpoint sequences and suspending execution when specified conditions are met, eliminating the need for manual monitoring and intervention at each breakpoint.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The developer pre-configures the sequence of breakpoints and suspension conditions before starting the debugging session. The debugger then automatically executes according to this pre-planned sequence, suspending execution at the appropriate breakpoints without requiring real-time developer decisions. This preliminary configuration enables automated handling of complex breakpoint sequences.

Inventive Principle:
Principle #10Preliminary action

2Productivity

If the debugger suspends execution at every breakpoint, then complete debugging coverage is achieved, but debugging efficiency decreases due to excessive manual intervention requirements

Engineering Contradiction:
Improvedebugging efficiencyVSAvoidtime for manual intervention
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

Instead of uniformly suspending execution at all breakpoints, the debugger applies selective suspension based on locally configured conditions for each breakpoint in the sequence. The system suspends execution only at specific breakpoints that match the pre-configured sequence and conditions, rather than pausing at every breakpoint encountered. This localized approach to suspension significantly reduces unnecessary manual intervention while maintaining debugging effectiveness for critical code paths.

Inventive Principle:
Principle #3Local quality

3Manufacturing precision

If complex breakpoint sequences are implemented, then precise control over execution suspension is achieved, but the system requires manual intervention to manage the complexity

Engineering Contradiction:
Improveprecision of execution controlVSAvoidease of debugging operation
Core Design Contradiction:
Manufacturing precisionVSEase of operation

Solution Approach 1:

The debugger acts as an intermediary between the developer's high-level debugging goals and the complex sequence of breakpoint executions. The developer specifies the desired debugging outcome and the breakpoint sequence, while the debugger automatically manages the complex coordination of multiple breakpoints, state tracking, and suspension timing. This intermediary role shields the developer from the operational complexity while achieving precise execution control.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS9110682B2State machine control of a debugger
Publication Date: 2015.08.18 MICROSOFT TECHNOLOGY LICENSING LLC
  • US9110682B2 patent drawing
  • US9110682B2 patent drawing
  • US9110682B2 patent drawing

AI summary

A debugger utilizes a finite state machine to control when execution of a software application is suspended. The finite state machine uses breakpoints as transitions that move the finite state machine from a start state to an acceptance state. The debugger tracks when breakpoints used in the finite state machine occur. When the finite state machine reaches an acceptance state, the debugger suspends execution of the software application to allow a developer to observe and/or alter the program state or software application. The finite state machine may be generated by a developer as a graph or as a regular expression that is then converted into a finite state machine. In this manner, a developer may specify more complex conditions upon which to suspend execution of a debugger.