Techniques for debugging computer programs involving multiple computing machines
AssigneeOracle International Corporation
InventorDavid M. Alpern
Life of this patent
Estimating the term…
Loading patent…
AssigneeOracle International Corporation
InventorDavid M. Alpern
Estimating the term…
Techniques for debugging a computer program that includes multiple modules executing on multiple machines include receiving, at a unifying component, first data from a first machine. The first data indicates debugging information generated by the first machine. Second data is also received at the unifying component from a second machine. The second data indicates debugging information generated by the second machine. Based on the first data and the second data, third data is formed indicating a single integrated representation of debugging information for the computer program. The unifying component allows debugging information from several machines to be integrated and then presented to a user through a single debugger client.
A method for debugging a computer program that includes a plurality of modules executing on a plurality of machines, the method comprising the steps of:
A non-transitory computer-readable storage medium storing instructions that are executable to cause one or more processors to perform steps comprising:
A method for debugging a computer program that includes a plurality of modules, the method comprising the steps of:
A non-transitory computer-readable storage medium storing instructions that are executable to cause one or more processors to perform steps comprising:
Dependencies are inferred from the claim text.
Drawings are temporarily unavailable. Open the PDF at USPTO
From the US filing history. Foreign family members aren’t listed.
Prevention of errors by analysis, debugging or testing of software: debugging of software
Computing and data processing
Term ended 19 Aug 2022 (estimated)
The present invention relates to debugging a computer program. In particular, the present invention relates to debugging a computer program that is executed by multiple virtual machines.
Computer programs are instructions for controlling processors in computing devices. Computer programs are typically written in one or more high level languages that are easy for a human being to understand. These source language statements are then typically compiled by a special type of program called a compiler and converted to coded instructions, which often correspond to the actual operations performed by a processor in a computer device. Frequently the coded instructions are not identical to the native instructions for the processor, but, instead, are instructions for a particular virtual machine. A virtual machine is a process that interprets coded instructions and executes them. The virtual machine itself is an executable sequence of instructions in the native language of the processor. Virtual machines are sometimes called interpreters. As used herein, the term “machines” includes virtual machines interpreting virtual machine instructions, operating systems interpreting operating system instructions, and processors executing native instructions.
An advantage of a virtual machine is that the same coded instructions for a particular virtual machine may be used on multiple computer devices built with different processors supporting different native instructions. The particular virtual machine is formed separately, using instructions from a different native instruction set for each different processor. Then, any program written in or compiled to the coded instructions for the particular virtual machine can be executed on any processor that executes the particular virtual machine. Examples of virtual machines include the Java virtual machine (JVM), the BASIC interpreter, the VisualBasic interpreter, and the interpreter for the PL/SQL language of the Oracle Corporation.
The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
FIG. 1 is a block diagram of a system for unifying debugging information from multiple virtual machines according to an embodiment;
FIG. 2 is a block diagram illustrating program modules on a first program host, according to an embodiment;
A method and apparatus for debugging computer programs involving multiple machines is described. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without these specific details. For example, embodiments of the invention are described below in the context of multiple virtual machines; however, other embodiments of the invention may involve a machine executing instructions native to a processor, or a machine executing operating system instructions, in place of one, several, or all of the virtual machines. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention.
FIG. 1 is a block diagram of a system for unifying debugging information from multiple virtual machines according to an embodiment. A multiple module program executes on one or more program hosts 110, for example to provide a service over a network. The program modules 130 are stored on the program hosts 110. For example, a Java program is made up of Java modules stored in modules 130 for the program. The program modules 130 are executed by multiple virtual machines, for example, first virtual machine 121, second virtual machine 122, and third virtual machine 123.
The system also includes a debugger client 102 executing on a debugger client host 104. The debugger client 102 includes an interface 152a for communicating with the virtual machines 121, 122, 123. The virtual machines 121, 122, 123 include interfaces 154a, 154c, 154d, respectively, for communicating with a debugger client. The debugger client and the interfaces are described in more detail in a later section.