Debugging Hosted Program Instances via Selective Monitoring

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Developers of hosted computer programs face challenges in debugging error conditions within large-scale program fleets hosted by computing service providers, as they lack direct control or access to underlying program instances, necessitating efficient monitoring and corrective actions without impacting users or increasing costs and complexity.

Innovation Solution

A system where developers provide debugging parameters to the host service, which selects a subset of program instances to monitor, attaches debugging components, sets breakpoints, and performs corrective actions upon error detection, including generating replica instances to maintain user experience while allowing developers to debug the original instances.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If developers directly access and debug all program instances in large-scale fleets, then debugging precision and control are improved, but system complexity and operational costs increase significantly

Engineering Contradiction:
Improvedebugging precisionVSAvoidsystem complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent segments the large-scale program fleet into manageable subsets by introducing intermediary components (debugging agents, gateway services) that divide the debugging task across multiple levels. Instead of direct developer access to all instances, the system creates hierarchical layers of control where debugging operations are routed through selected representative instances and aggregated results, reducing the complexity burden on developers while maintaining comprehensive monitoring capability.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces intermediary components including debugging agents embedded in program instances, gateway services that manage communication between developers and hosted programs, and automated analysis systems. These intermediaries act as mediators that translate developer debugging requests into coordinated actions across the fleet, aggregate diagnostic data from multiple sources, and present unified debugging interfaces, thereby reducing direct system complexity while preserving debugging precision.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If comprehensive monitoring of all program instances is implemented, then error detection capability is improved, but operational costs and system complexity increase

Engineering Contradiction:
Improveerror detection capabilityVSAvoidmonitoring system complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent implements partial monitoring strategies where instead of uniformly monitoring all program instances with equal depth, the system applies selective monitoring based on risk assessment, historical error patterns, and instance criticality. High-risk instances receive intensive monitoring while low-risk instances receive baseline monitoring, achieving comprehensive error detection capability with reduced overall system complexity and operational overhead.

Inventive Principle:
Principle #16Partial or excessive action

Solution Approach 2:

The patent establishes feedback loops where monitoring data from program instances is continuously analyzed, and results feed back into adjusting monitoring priorities and resource allocation. The system learns from detected errors and patterns to dynamically adapt which instances require closer scrutiny, improving error detection efficiency while preventing unnecessary monitoring complexity on stable instances.

Inventive Principle:
Principle #23Feedback

3Productivity

If debugging operations are performed on live program instances, then debugging effectiveness is improved, but user experience and program stability may deteriorate

Engineering Contradiction:
Improvedebugging effectivenessVSAvoidprogram stability
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent creates virtual copies or snapshots of program instances for debugging purposes. Instead of directly instrumenting live instances with full debugging overhead, the system generates replicated environments that mirror the state of running instances, allowing developers to perform intensive debugging operations on copies while the original instances continue serving users with minimal disruption. This copying approach isolates debugging interference from production stability.

Inventive Principle:
Principle #26Copying

Solution Approach 2:

The patent performs preliminary debugging preparations by setting up debugging agents, configuring monitoring parameters, and preparing analysis tools in advance before actual debugging is needed. When errors occur, the pre-configured systems can immediately engage with minimal impact on running instances, rather than requiring intrusive setup operations during active debugging sessions that could destabilize live programs.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS10120779B1Debugging of hosted computer programs
Publication Date: 2018.11.06 AMAZON TECH INC
  • US10120779B1 patent drawing
  • US10120779B1 patent drawing
  • US10120779B1 patent drawing

AI summary

Techniques for debugging of hosted computer programs are described herein. Execution of a set of instances of a computer program may be hosted by a service on behalf of a developer. The developer may indicate one or more error conditions and an amount of program instances to be monitored for the error conditions. The error conditions may include breakpoints, processing conditions, memory conditions, network packet conditions, and others. A subset of the program instances may be monitored for an error conditions. An error condition may then be detected at a first program instance. A notification of the occurrence of the error condition may be provided to the developer along with information for connecting to the first program instance. The developer may connect to and debug the first program instance, and may also access information such as a memory dump, performance logs, network packet information, and more.