IP Library Granted Patent US 7,992,133
Granted Patent B1
US 7,992,133 · App. 11/560,760 · Granted Aug 2, 2011

Techniques for debugging distributed applications

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 7,992,133
App. No.
11/560,760
Granted
Aug 2, 2011
Kind
B1
Abstract

Techniques are disclosed for debugging heterogeneous applications in a distributed environment. In one embodiment, an architecture for debugging heterogeneous applications in a distributed environment is configured to enable both location transparency and dynamic exposure of service state. Regardless of where the physical application state resides, the architecture describes or otherwise provides a mechanism that allows seamless debugging and troubleshooting of distributed applications. The location of the state is transparent to the debugger and the application being debugged. In addition, the architecture enables an individual service to expose its state dynamically at run-time. It is possible for the service to expose its state in a self-describing fashion, allowing service state to be exposed in the architecture regardless of the service environment. The architecture allows for all the capabilities of debuggers running in non-distributed, homogeneous environments in a distributed heterogeneous environment.

Claims (47)

1. A method for debugging distributed applications for a given scenario, comprising:

exposing, by a Run Context, state of at least one of a distributed application and services making-up that distributed application, the Run Context including an Application Programming Interface (API) that allows the services to interact during debug;

coordinating, by a Debug Context, the distributed application and presenting a unified view of the distributed application to a debugger, wherein the Debug Context includes a centralized repository; and

triggering, by the Run Context as the Run Context flows with the distributed application, a callback into the Debug Context, thereby modifying state of the Debug Context;

wherein the distributed application utilizes the Run Context to interact with the Debug Context and wherein the callback includes at least one of distributed application state and service state and the at least one of distributed application state and service state is modified by the debugger using the Debug Context before a response is sent from the debugger.

2. The method of claim 1 wherein the Run Context can be copied and destroyed during execution of the distributed application, thereby allowing the Run Context to propagate wherever the distributed application resides, regardless of how and when the distributed application decides to distribute itself.

3. The method of claim 1 wherein the Run Context further includes knowledge on how to contact the debugger.

4. The method of claim 1 wherein when the Run Context triggers a callback, the method further comprises:

waiting, by the Run Context, for a response from the debugger utilizing the Debug Context.

5. The method of claim 4 wherein while waiting for a response, the Run Context blocks at least part of the distributed application until the debugger allows that at least part of the distributed application to resume.

6. The method of claim 1 wherein the debugger can modify at least one of distributed application state and service state dynamically during debug.

7. The method of claim 1 further comprising:

executing one or more debugging capabilities, including at least one of providing breakpoints, suspending/resuming, single-stepping across heterogeneous service environments, and modifying distributed application and/or service state dynamically while debugging.

8. The method of claim 1 wherein the Run Context is associated with a stack of locations, the method further comprising:

accessing the stack to carry out a single-stepping process.

9. The method of claim 1 wherein the Run Context is associated with a tracking ID that allows the debugger to detect when multiple branches of execution occur.

10. A computer program product, residing on one or more non-transitory machine-readable storage mediums encoded with distributed applications for a given scenario, the process comprising:

exposing, by a Run Context, state of at least one of a distributed application and services making-up that distributed application, the Run Context including an Application Programming Interface (API) that allows the services to interact during debug;

coordinating, by a Debug Context, the distributed application and presenting a unified view of the distributed application to a debugger, wherein the Debug Context includes a centralized repository; and

triggering, by the Run Context as the Run Context flows with the distributed application, a callback into the Debug Context, thereby modifying state of the Debug Context;

wherein the distributed application utilizes the Run Context to interact with the Debug Context and wherein the callback includes at least one of distributed application state and service state and the at least one of distributed application state and service state is modified by the debugger using the Debug Context before a response is sent from the debugger.

11. The computer program product of claim 10 wherein the Run Context can be copied and destroyed during

execution of the distributed application, thereby allowing the Run Context to propagate wherever the distributed application resides, regardless of how and when the distributed application decides to distribute itself.

12. The computer program product of claim 10 wherein the Run Context further includes knowledge on how to contact the debugger.

13. The computer program product of claim 10 wherein when the Run Context triggers a callback, the process further comprises:

waiting, by the Run Context, for a response from the debugger utilizing the Debug Context.

14. The computer program product of claim 13 wherein while waiting for a response, the Run Context blocks at least part of the distributed application until the debugger allows that at least part of the distributed application to resume.

15. The computer program product of claim 10 wherein the debugger can modify at least one of distributed application state and service state dynamically during debug.

16. The computer program product of claim 10 , the process further comprising:

executing one or more debugging capabilities, including at least one of providing breakpoints, suspending/resuming, single-stepping across heterogeneous service environments, and

modifying distributed application and/or service state dynamically while debugging.

17. The computer program product of claim 10 wherein the Run Context is associated with a stack of locations, the process further comprising:

accessing the stack to carryout a single-stepping process.

18. The computer program product of claim 10 wherein the Run Context is associated with a tracking ID that allows the debugger to detect when multiple branches of execution occur.

19. A computer system for debugging distributed applications for a given scenario, comprising:

a processor configured to run:

a Run Context for exposing state of at least one of a distributed application and services making-up that distributed application, the Run Context including an Application Programming Interface (API) that allows the services to interact during debug;

a Debug Context for coordinating the distributed application and presenting a unified view of the distributed application to a debugger, wherein the Debug Context includes a centralized repository; and

the Run Context as the Run Context flows with the distributed application, for triggering a callback into the Debug Context, thereby modifying state of the Debug Context;

wherein the distributed application utilizes the Run Context to interact with the Debug Context and wherein the callback includes at least one of distributed application state and service state and the at least one of distributed application state and service state is modified by the debugger using the Debug Context before a response is sent from the debugger.

20. The system of claim 19 wherein the Run Context can be copied and destroyed during execution of the distributed application, thereby allowing the Run Context to propagate wherever the distributed application resides, regardless of how and when the distributed application decides to distribute itself.

21. The system of claim 19 wherein when the Run Context triggers a callback, the Run Context is further configured for waiting for a response from the debugger utilizing the Debug Context.

22. The system of claim 21 wherein while waiting for a response, the Run Context blocks at least part of the distributed application until the debugger allows that at least part of the distributed application to resume.

23. The system of claim 19 wherein the debugger can modify at least one of distributed application state and service state dynamically during debug.

24. The system of claim 19 wherein the system executes one or more debugging capabilities, including at least one of providing breakpoints, suspending/resuming, single-stepping across heterogeneous service environments, and modifying application and/or service state dynamically while debugging.

25. The system of claim 19 wherein the Run Context is associated with a stack of locations, and is further configured for accessing the stack to carryout a single-stepping process.

26. The system of claim 19 wherein the Run Context is associated with a tracking ID that allows the debugger to detect when multiple branches of execution occur.

Assignments (4)
SECURITY INTEREST Recorded May 31, 2022
From: AUREA SOFTWARE, INC.; NEXTDOCS CORPORATION,; MESSAGEONE, LLC
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 060220/0673 →
PATENT SECURITY AGREEMENT Recorded Mar 30, 2018
From: AUREA SOFTWARE, INC.; KERIO TECHNOLOGIES INC.; NEXTDOCS CORPORATION; EXINDA INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 045789/0445 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 28, 2015
From: PROGRESS SOFTWARE CORPORATION
To: AUREA SOFTWARE, INC.
Reel/Frame 036201/0689 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 21, 2007
From: NUZZOLO, JR., CHARLES A.; THEROUX, MICHAEL E.; NICOL, GAVIN THOMAS; COLLINS, WILLIAM J.; STINCHFIELD, DONALD E.; CULLEN, WILLIAM M.
To: PROGRESS SOFTWARE CORPORATION
Reel/Frame 018914/0334 →