Remote Debugging System Using Aggregated Thread Data

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Modern software applications are too large for static program analysis, making it impossible to ensure functional correctness, and existing debugging methods are inefficient when performed across wide area networks due to high latency and the chatty nature of protocols like JDWP.

Innovation Solution

Implement a system for remote debugging across wide area networks using a lightweight debugger frontend and a binary two-way communication protocol that aggregates thread data into a single data packet, reducing network traffic and latency, allowing for real-time debugging of cloud applications without modifying the Java Virtual Machine.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If standard debugging protocols like JDWP are used for remote debugging across WAN, then debugging functionality is provided, but network latency and protocol overhead significantly reduce debugging efficiency

Engineering Contradiction:
Improveremote debugging capabilityVSAvoiddebugging latency
Core Design Contradiction:
Ease of operationVSLoss of time

Solution Approach 1:

The patent introduces a local server as an intermediary component between the remote debugger and the local application. The local server receives debugging requests from the remote debugger, processes them locally with the application, and returns results. This intermediary architecture enables remote debugging functionality while minimizing WAN latency by keeping the debugging session locally anchored, thus resolving the contradiction between providing remote debugging capability and maintaining acceptable debugging speed.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Loss of information

If detailed thread data is transmitted over WAN for debugging, then complete debugging information is provided, but network traffic and bandwidth consumption increase

Engineering Contradiction:
Improvedebugging information completenessVSAvoidnetwork bandwidth consumption
Core Design Contradiction:
Loss of informationVSLoss of energy

Solution Approach 1:

The patent merges multiple individual thread data transmissions into a single aggregated data packet. Instead of sending separate requests and responses for each thread's information (stack traces, variables, state), the system consolidates all debugging data into one comprehensive packet transmitted over the WAN. This merging approach maintains complete debugging information while dramatically reducing network traffic and bandwidth consumption.

Inventive Principle:
Principle #5Merging (Combining)

3Productivity

If the debugger and debuggee run on the same system locally, then debugging efficiency is high, but remote debugging capability is lost

Engineering Contradiction:
Improvedebugging efficiencyVSAvoidremote debugging capability
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The patent segments the debugging system into distinct components: a remote debugger frontend, a local server, and the local application (debuggee). Each component runs on a different system, with the remote debugger on the developer's machine, the local server and application on the target system. This segmentation enables remote debugging capability while maintaining high efficiency by keeping the critical debugger-debuggee interaction local, thus resolving the contradiction between productivity and adaptability.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS9117019B2Debugging remote software applications across WAN connections
Publication Date: 2015.08.25 SAP SE
  • US9117019B2 patent drawing
  • US9117019B2 patent drawing
  • US9117019B2 patent drawing

AI summary

The present disclosure describes methods, systems, and computer program products for providing remote debugging of a software or cloud application across a wide area network. A method includes transmitting, from a remote communication device to a client or cloud computing device, instructions to adjust a running application to a debugging mode; receiving, at the remote communication device from a server, aggregated thread data in a data packet by using a second debugging data protocol different from the Java Debug Wire Protocol; receiving a debugging command and applying the debugging command to the application running in the debugging mode.