Synchronized Java Debugger for Database Stored Procedures

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

JAVA debuggers fail to maintain synchronization between JAVA source and class files, leading to discrepancies in execution control during debugging, as they often use outdated class files instead of updated source files.

Innovation Solution

A synchronized JAVA debugger is implemented with a fetching module to retrieve the JAVA source file from a database, a storage module to store it in the working directory, and an execution module to ensure synchronization between the source file in the working directory and the corresponding class file in the database, using protocols like JDWP for communication and compression to reduce data transfer.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If a debugger uses class files for debugging, then debugging can be performed, but synchronization between source files and class files cannot be maintained

Engineering Contradiction:
Improvedebugging accuracyVSAvoidsynchronization information
Core Design Contradiction:
ReliabilityVSLoss of information

Solution Approach 1:

The system performs preliminary actions by fetching the source file from the database and storing it in the current working directory before debugging begins. This ensures that the debugger has access to the correct source file version that corresponds to the class file being debugged, establishing synchronization in advance rather than attempting to maintain it during debugging operations.

Inventive Principle:
Principle #10Preliminary action

2Adaptability or versatility

If source files are updated in the database, then newer code can be debugged, but existing debuggers cannot retrieve updated source files

Engineering Contradiction:
Improvecode update capabilityVSAvoiddebugger initialization time
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The system fetches and stores the source file in the current working directory before debugging starts, so that when source files are updated in the database, the debugger can retrieve the updated version by simply fetching a fresh copy. This preliminary setup enables easy adaptation to code updates without requiring complex real-time synchronization mechanisms.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system creates a copy of the source file from the database and stores it in the current working directory. This copying approach allows the debugger to work with a local version while the original remains in the database, enabling updates to be retrieved by fetching a new copy. This resolves the contradiction by providing adaptability through easy re-fetching while minimizing time loss through local storage.

Inventive Principle:
Principle #26Copying

3Productivity

If debuggers store source files locally, then debugging speed improves, but synchronization with database source files is lost

Engineering Contradiction:
Improvedebugging speedVSAvoidfile synchronization
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The system performs the file fetching and storage operation as a preliminary action before debugging begins. By establishing the local copy in advance, the system achieves fast debugging operations while maintaining reliability through the deliberate setup that ensures the local copy corresponds to the database version at the start of debugging.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS9552277B2Synchronized java debugger
Publication Date: 2017.01.24 ORACLE INT CORP
  • US9552277B2 patent drawing
  • US9552277B2 patent drawing
  • US9552277B2 patent drawing

AI summary

A synchronized JAVA debugger maintains synchronization between a JAVA source file in the debugger current working directory and a corresponding JAVA stored procedure in a database to be debugged. The debugger includes fetching module, storage module, display module, and execution module. The fetching module fetches a corresponding JAVA source file for a JAVA stored procedure from a database. The display module displays a recompile option, as a button, menu, or command line interface. In response to selection of the recompile option in the user interface, the execution module terminates the debugging session, sends a modified JAVA source file to the remote target JAVA Virtual Machine (JVM) and instructs the remote JVM to recompile the JAVA stored procedure using the modified JAVA source file before a new debugging session is started. Communication between the debugger and the remote database is by sending and receiving JAVA Debug Wire Protocol (JDWP) command packets.