IP Library Granted Patent US 11,010,280
Granted Patent B1
US 11,010,280 · App. 16/352,106 · Granted May 18, 2021

System and method for virtualization-assisted debugging

Inventors: Andrey Stupachenko (Moscow, RU); Nikolay Dobrovolskiy (Moscow, RU)
Assignee: Parallels International GmbH
G06F11/3664G06F9/45558G06F11/3624G06F2009/45591
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 11,010,280
App. No.
16/352,106
Granted
May 18, 2021
Kind
B1
Abstract

Disclosed are systems and methods for debugging program code using a computing system. The disclosed method includes designating a control point in a software application subject to a debugging procedure, and then executing the program code for the software application as a guest application executing within a virtual machine. Upon detection of a virtualization event, the hardware processor transfers program control to a hypervisor which then determines whether the virtualization event corresponds to the designated control point based on an execution state of the guest application. If so, the virtualization event handler may generate a debugging event that is used by a debugger.

Claims (75)

1. A computer-implemented method for debugging program code using a computing system, comprising:

designating a control point in a software application subject to a debugging procedure;

executing, by a hardware processor, program code for the software application as a guest application executing within a virtual machine;

transferring, by the hardware processor, program control to a hypervisor in response to detecting a virtualization event caused by execution of the guest application;

determining whether the virtualization event corresponds to the designated control point based on an execution state of the guest application;

upon determining that the virtualization event corresponds to the designated control point generating a debugging event; and

upon determining that the virtualization event does not correspond to the designated control point handling the virtualization event with a virtual machine monitor of the virtual machine.

2. The method of claim 1 , wherein

determining whether the virtualization event corresponds to the designated control point based on an execution state of the software application comprises:

determining that an address associated with the designated control point matches a virtual program counter from the execution state of the guest application.

3. The method of claim 1 , further comprising:

transferring, by the hardware processor, program control to the hypervisor in response to detecting a monitor trap flag for the guest application executing within the virtual machine.

4. The method of claim 1 , wherein

the hypervisor is executing in an exception layer 2 mode of operation.

5. The method of claim 1 , wherein

designating the control point in a software application is performed without inserting debugging program instructions into the program code for the software application.

6. The method according to claim 1 , wherein

the designated control point is a conditional control point.

7. The method according to claim 1 , wherein the designated control point is a memory address of the program code; and determining whether the virtualization event corresponds to the designated control point comprises analysing whether a point of execution of the software application at which it is paused as a result of the virtualization event correlates with a memory address of the program code associated with the designated control point.

8. The method according to claim 1 , wherein

the debugging event is transmitted via a network to an external debugging platform.

9. The method according to claim 1 , further comprising

providing a specifically configured hypervisor for managing the virtual machine; wherein

the specifically configured hypervisor processes the virtualization events permitting normal virtualization events not associated with the designated control point to pass through and directing other virtualization events associated with the designated control point to a software debugger.

10. A system for debugging program code using a computing system, comprising:

a system memory configured to store program code for a software application; and

a hardware processor configured to:

designate a control point in the software application subject to a debugging procedure;

execute the program code for the software application as a guest application executing within a virtual machine;

transfer program control to a hypervisor in response to detecting a virtualization event caused by execution of the guest application;

determine whether the virtualization event corresponds to the designated control point based on an execution state of the guest application;

upon determining that the virtualization event corresponds to the designated control point generating a debugging event; and

upon determining that the virtualization event does not correspond to the designated control point handling the virtualization event with a virtual machine monitor of the virtual machine.

11. The system of claim 10 , wherein

the hardware processor configured to determine whether the virtualization event corresponds to the designated control point based on an execution state of the software application is further configured to:

determine that an address associated with the designated control point matches a virtual program counter from the execution state of the guest application.

12. The system of claim 10 , wherein

the hardware processor is further configured to:

transfer program control to the hypervisor in response to detecting a monitor trap flag for the guest application executing within the virtual machine.

13. The system of claim 10 , wherein

the hypervisor is executing in an exception layer 2 mode of operation.

14. The system of claim 10 , wherein

designating the control point in a software application is performed without inserting debugging program instructions into the program code for the software application.

15. The system according to claim 10 , wherein

the designated control point is a conditional control point.

16. The system according to claim 10 , wherein the designated control point is a memory address of the program code; and determining whether the virtualization event corresponds to the designated control point comprises analysing whether a point of execution of the software application at which it is paused as a result of the virtualization event correlates with a memory address of the program code associated with the designated control point.

17. The system according to claim 10 , wherein

the debugging event is transmitted via a network to an external debugging platform.

18. The system according to claim 10 , further comprising

providing a specifically configured hypervisor for managing the virtual machine; wherein

the specifically configured hypervisor processes the virtualization events permitting normal virtualization events not associated with the designated control point to pass through and directing other virtualization events associated with the designated control point to a software debugger.

19. A non-transitory computer readable medium comprising computer executable instructions for debugging program code using a computing system, including instructions for:

designating a control point in a software application subject to a debugging procedure;

executing program code for the software application as a guest application executing within a virtual machine;

transferring program control to a hypervisor in response to detecting a virtualization event caused by execution of the guest application;

determining whether the virtualization event corresponds to the designated control point based on an execution state of the guest application;

upon determining that the virtualization event corresponds to the designated control point generating a debugging event; and

upon determining that the virtualization event does not correspond to the designated control point handling the virtualization event with a virtual machine monitor of the virtual machine.

20. The computer readable medium of claim 19 , wherein

the instructions for determining whether the virtualization event corresponds to the designated control point based on an execution state of the software application comprises instructions for:

determining that an address associated with the designated control point matches a virtual program counter from the execution state of the guest application.

21. The computer readable medium of claim 19 , further comprising instructions for:

transferring program control to the hypervisor in response to detecting a monitor trap flag for the guest application executing within the virtual machine.

22. The computer readable medium of claim 19 , wherein

the hypervisor is executing in an exception layer 2 mode of operation.

23. The computer readable medium of claim 19 , wherein

designating the control point in a software application is performed without inserting debugging program instructions into the program code for the software application.

24. The computer readable medium according to claim 19 , wherein

the designated control point is a conditional control point.

25. The computer readable medium according to claim 19 , wherein the designated control point is a memory address of the program code; and determining whether the virtualization event corresponds to the designated control point comprises analysing whether a point of execution of the software application at which it is paused as a result of the virtualization event correlates with a memory address of the program code associated with the designated control point.

26. The computer readable medium according to claim 19 , wherein

the debugging event is transmitted via a network to an external debugging platform.

27. The computer readable medium according to claim 19 , wherein

providing a specifically configured hypervisor for managing the virtual machine; wherein

the specifically configured hypervisor processes the virtualization events permitting normal virtualization events not associated with the designated control point to pass through and directing other virtualization events associated with the designated control point to a software debugger.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 13, 2019
From: STUPACHENKO, ANDREY; DOBROVOLSKIY, NIKOLAY
To: PARALLELS INTERNATIONAL GMBH
Reel/Frame 048586/0363 →
Cited By (3)
US 12,287,697 US 12,511,144 US 12,650,915