IP Library › Granted Patent US 8,612,937
Granted Patent B2
US 8,612,937 · App. 13/217,826 · Granted Dec 17, 2013

Synchronously debugging a software program using a plurality of virtual machines

Inventors: Clark A. Dudek (Raleigh, NC); Kobina K. Inkumsah (Lansing, MI); David B. Roberts (Cary, NC); Adrian X. Rodriguez (Durham, NC); Ping Zhou (Poughkeepsie, NY)
Assignee: International Business Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,612,937
App. No.
13/217,826
Granted
Dec 17, 2013
Kind
B2
Abstract

Methods, apparatuses, and computer program products for synchronously debugging a software program using a plurality of virtual machines are provided. Embodiments include controlling, by a master debugging module operating on a first virtual machine, execution of the software program within the first virtual machine; controlling, by a slave debugging module operating on a second virtual machine, execution of the software program within the second virtual machine including delaying execution of the software program within the second virtual machine relative to the execution of the software program within the first virtual machine; detecting, by the master debugging module, an error in the execution of the software program within the first virtual machine; and in response to the detection of the error, capturing, by a hypervisor, a snapshot of the second virtual machine.

Claims (42)

1. A computer implemented method of synchronously debugging a software program using a plurality of virtual machines, the method comprising:

controlling, by a master debugging module operating on a first virtual machine, execution of a first copy of the software program within the first virtual machine;

controlling, by a slave debugging module operating on a second virtual machine, execution of a second copy of the software program within the second virtual machine including delaying execution of the second copy of the software program within the second virtual machine relative to the execution of the first copy of the software program within the first virtual machine;

detecting, by the master debugging module, an error in the execution of the first copy of the software program within the first virtual machine; and

in response to the detection of the error, capturing, by a hypervisor, a snapshot of the second virtual machine.

2. The method of claim 1 further comprising

receiving from a user, by the master debugging module, a delay type;

based on the delay type, determining a delay to the execution of the second copy of the software program within the second virtual machine; and

indicating the determined delay to the slave debugging module;

wherein the slave debugging module controls the execution of the second copy of the software program within the second virtual machine based on the indicated delay.

3. The method of claim 2 wherein the delay type indicates a stopping point for the execution of the second copy of the software program within the second virtual machine.

4. The method of claim 2 wherein the delay type indicates a number of computer program instructions that the execution of the second copy of the software program within the second virtual machine is behind the execution of the first copy of the software program within the first virtual machine.

5. The method of claim 1 wherein the snapshot comprises one of: contents of RAM, register values, cache contents, and contents of the second virtual machine's virtual disk drive.

6. The method of claim 1 further comprising transmitting, by the hypervisor, the snapshot to one or more developers for debugging.

7. Apparatus for synchronously debugging a software program using a plurality of virtual machines, the apparatus comprising a computer processor, a computer memory operatively coupled to the computer processor, the computer memory having disposed within it computer program instructions that when executed by the computer processor causes the apparatus to carry out the steps of:

controlling, by a master debugging module operating on a first virtual machine, execution of a first copy of the software program within the first virtual machine;

controlling, by a slave debugging module operating on a second virtual machine, execution of a second copy of the software program within the second virtual machine including delaying execution of the second copy of the software program within the second virtual machine relative to the execution of the first copy of the software program within the first virtual machine;

detecting, by the master debugging module, an error in the execution of the first copy of the software program within the first virtual machine; and

in response to the detection of the error, capturing, by a hypervisor, a snapshot of the second virtual machine.

8. The apparatus of claim 7 further comprising computer program instructions that when executed by the computer processor causes the apparatus to carry out the steps of:

receiving from a user, by the master debugging module, a delay type;

based on the delay type, determining a delay to the execution of the second copy of the software program within the second virtual machine; and

indicating the determined delay to the slave debugging module;

wherein the slave debugging module controls the execution of the second copy of the software program within the second virtual machine based on the indicated delay.

9. The apparatus of claim 8 wherein the delay type indicates a stopping point for the execution of the second copy of the software program within the second virtual machine.

10. The apparatus of claim 8 wherein the delay type indicates a number of computer program instructions that the execution of the second copy of the software program within the second virtual machine is behind the execution of the first copy of the software program within the first virtual machine.

11. The apparatus of claim 7 wherein the snapshot comprises one of: contents of RAM, register values, cache contents, and contents of the second virtual machine's virtual disk drive.

12. The apparatus of claim 7 further comprising computer program instructions that when executed by the computer processor causes the apparatus to carry out the steps of transmitting, by the hypervisor, the snapshot to one or more developers for debugging.

13. A computer program product for synchronously debugging a software program using a plurality of virtual machines, the computer program product disposed upon a computer readable storage medium, wherein the computer readable storage medium is not a signal, the computer program product comprising computer program instructions capable, when executed, of causing a computer to carry out the steps of:

controlling, by a master debugging module operating on a first virtual machine, execution of a first copy of the software program within the first virtual machine;

controlling, by a slave debugging module operating on a second virtual machine, execution of a second copy of the software program within the second virtual machine including delaying execution of the second copy of the software program within the second virtual machine relative to the execution of the first copy of the software program within the first virtual machine;

detecting, by the master debugging module, an error in the execution of the first copy of the software program within the first virtual machine; and

in response to the detection of the error, capturing, by a hypervisor, a snapshot of the second virtual machine.

14. The computer program product of claim 13 further comprising computer program instructions capable, when executed, of causing a computer to carry out the steps of:

receiving from a user, by the master debugging module, a delay type;

based on the delay type, determining a delay to the execution of the second copy of the software program within the second virtual machine; and

indicating the determined delay to the slave debugging module;

wherein the slave debugging module controls the execution of the second copy of the software program within the second virtual machine based on the indicated delay.

15. The computer program product of claim 14 wherein the delay type indicates a stopping point for the execution of the second copy of the software program within the second virtual machine.

16. The computer program product of claim 14 wherein the delay type indicates a number of computer program instructions that the execution of the second copy of the software program within the second virtual machine is behind the execution of the first copy of the software program within the first virtual machine.

17. The computer program product of claim 13 wherein the snapshot comprises one of: contents of RAM, register values, cache contents, and contents of the second virtual machine's virtual disk drive.

18. The computer program product of claim 13 further comprising computer program instructions capable, when executed, of causing a computer to carry out the steps of transmitting, by the hypervisor, the snapshot to one or more developers for debugging.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 25, 2011
From: DUDEK, CLARK A.; INKUMSAH, KOBINA K.; ROBERTS, DAVID B.; RODRIGUEZ, ADRIAN X.; ZHOU, PING
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 026808/0719 →
Continuity (1)
Related Publication 20130055206A1 · Feb 28, 2013