IP Library Granted Patent US 7,418,697
Granted Patent B2
US 7,418,697 · App. 10/626,958 · Granted Aug 26, 2008

Method and system for fast application debugging

Assignee: Microsoft 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 7,418,697
App. No.
10/626,958
Granted
Aug 26, 2008
Kind
B2
Abstract

Specific tasks associated with debugging are performed in the background, prior to a user of an application development tool invoking the debugger. The tasks including (1) starting a hosting process, (2) loading a hosted runtime environment (e.g., .NET runtime) in the process, and (3) attaching a debugger to the hosting process, are performed in the background before the user commences debugging. Once the user invokes the debugger, the user's application is executed and debugged. Thus, the perceived time to start debugging is greatly reduced.

Claims (62)

1. A method for debugging an application operating within a runtime environment and loaded into an application process, said method comprising:

creating a hosting process separate from the application process and not based on said application to be debugged by a debugger, wherein said hosting process is created prior to invoking the debugger;

starting said runtime environment in the hosting process prior to invoking the debugger;

attaching a debugger to said hosting process prior to invoking the debugger, and causing the attached debugger to enter into a hosting process mode where the attached debugger is to debug the application as loaded from the application process into the hosting process;

preloading, prior to invoking the debugger, selected assemblies into an application domain prior to receiving a request to debug;

receiving said request to debug the application prior to invoking the debugger; and

in response to receiving said request, loading the application from the application process into the hosting process; and

invoking the debugger with respect to the hosting process and not the application process.

2. A method in accordance with claim 1 , wherein said runtime environment comprises a hosted runtime environment.

3. A method in accordance with claim 1 , wherein said runtime environment comprises a script interpreter.

4. A method in accordance with claim 1 , wherein said runtime environment comprises an intermediate language interpreter.

5. A method in accordance with claim 1 , further comprising:

creating an application domain within said hosting process for debugging said application.

6. A method in accordance with claim 1 , further comprising:

configuring said debugger to a hosting process mode for debugging said application via said hosting process.

7. A method in accordance with claim 1 , wherein said runtime environment is hosted by said hosting process.

8. A method in accordance with claim 1 , wherein said application is developed in a design-time environment.

9. A method in accordance with claim 8 , wherein said design-time environment is a rapid application design environment.

10. A method in accordance with claim 1 , wherein performance of said acts of creating, starting and attaching prior to said act of receiving is not perceived by a user.

11. A system encoded in a computer-readable storage medium for debugging an application operating within a runtime environment and loaded into an application process, said system comprising:

a hosting process separate from the application process for:

preparing a hosting environment in which said application is debuggable by a debugger, wherein the hosting environment is prepared prior to invoking the debugger; and

receiving, prior to invoking the debugger, a request to debug said application, wherein said hosting process is independent of said application;

the debugger for debugging said application via said hosting process; and

a design-time environment for hosting the debugger, wherein said hosting process is created, said runtime environment is started within said hosting process, and said debugger is attached to said hosting process before said request to debug said application is received by said design-time environment, the attached debugger being caused to enter into a hosting process mode where the attached debugger is to debug the application as loaded from the application process into the hosting process, and wherein in response to receiving said request, the application is loaded from the application process into the hosting process, and the debugger is invoked with respect to the hosting process and not the application process.

12. A system in accordance with claim 11 , wherein an application domain is created within said hosting process for debugging said application.

13. A system in accordance with claim 12 , wherein selected assemblies are preloaded into said application domain prior to receiving said request to debug.

14. A system in accordance with claim 11 , wherein said runtime environment comprises a hosted runtime environment.

15. A system in accordance with claim 11 , wherein said runtime environment comprises a script interpreter.

16. A system in accordance with claim 11 , wherein said runtime environment comprises an intermediate language interpreter.

17. A system in accordance with claim 11 , wherein said design-time environment comprises a rapid application development tool.

18. A system in accordance with claim 11 , wherein said hosting process is created, said runtime environment is started within said hosting process, and said debugger is attached to said hosting process before said request to debug said application is received as background operations not perceived by a user of said system.

19. A computer readable storage medium encoded with a computer program code for directing a computer processor to debugging an application operating within a runtime environment and loaded into an application process, said program code comprising:

a create hosting process code segment for causing said computer processor to create a hosting process separate from the application process and not based on said application to be debugged by a debugger, wherein said hosting process is created prior to invoking the debugger;

a start runtime code segment for causing said computer processor to start said runtime environment in the hosting process;

an attach debugger code segment for causing said computer processor to attach a debugger to said hosting process prior to invoking the debugger, and causing the attached debugger to enter into a hosting process mode where the attached debugger is to debug the application as loaded from the application process into the hosting process;

a preload assembly code segment for causing said computer process to preload selected assemblies into an application domain prior to receiving said request to debug;

a receive code segment for causing said computer processor to receive a request to debug the application prior to invoking the debugger;

a load application code segment for causing said computer processor to, in response to receiving said request, load the application from the application process into the hosting process; and

an invoke code segment for invoking the debugger with respect to the hosting process and not the application process.

20. A computer readable storage medium in accordance with claim 19 , wherein said runtime environment comprises a hosted runtime environment.

21. A computer readable storage medium in accordance with claim 19 , wherein said runtime environment comprises a script interpreter.

22. A computer readable storage medium in accordance with claim 19 , wherein said runtime environment comprises an intermediate language interpreter.

23. A computer readable storage medium in accordance with claim 19 , said program code further comprising:

a create application domain code segment for causing said computer processor to create an application domain within said hosting process for debugging said application.

24. A computer readable storage medium in accordance with claim 19 , said program code further comprising:

a configure debugger code segment for causing said computer processor to configure said debugger to a hosting process mode for debugging said application via said hosting process.

25. A computer readable storage medium in accordance with claim 19 , wherein said application is developed by a design-time environment and said design-time environment comprises a rapid application development tool.

26. A computer readable storage medium in accordance with claim 19 , wherein said application is developed by a design-time environment.

27. A computer readable storage medium in accordance with claim 26 , wherein said design-time environment is a rapid application design environment.

28. A computer readable storage medium in accordance with claim 19 , wherein performance of said acts of creating, starting and attaching prior to said act of receiving is not perceived by a user.

29. A software development system encoded in a computer readable storage medium and comprising:

a development tool that provides a user environment and interface to develop an application loaded into an application process, said user environment and interface including a user-operable control to begin debugging; and

a debugging preparation module that:

creates a hosting process separate from the application process and not based on said application to be debugged by a debugger, wherein said hosting process is created prior to invoking the debugger;

starts, in the hosting process, prior to invoking the debugger, a runtime environment under which said application is runnable; and

attaches a debugger to said hosting process prior to invoking the debugger, and causes the attached debugger to enter into a hosting process mode where the attached debugger is to debug the application as loaded from the application process into the hosting process;

said user-operable control causing said application to be loaded from the application process into the hosting process prior to invoking the debugger, said user-operable control thereafter invoking the debugger with respect to the hosting process and not the application process.

30. A system in accordance with claim 29 , wherein said development tool comprises a rapid application development tool.

31. A system in accordance with claim 29 , wherein said hosting process comprises a hosted runtime environment.

32. A system in accordance with claim 29 , wherein said user environment comprises a script interpreter.

33. A system in accordance with claim 29 , wherein said user environment comprises an intermediate language interpreter.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034541/0477 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 5, 2003
From: ENG, MICHAEL
To: MICROSOFT CORPORATION
Reel/Frame 014755/0912 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 25, 2003
From: GRYKO, IZYDOR; SAMPSON, MICHAL; CRAWFORD, BRIAN; HODGES, C. DOUGLAS; ENG, MICHAEL; KRANTZ, ADAM; CARTER, ERIC; OMIYA, ELLIOT; QUINN, THOMAS; RIVARD, JONN
To: MICROSOFT CORPORATION
Reel/Frame 014365/0130 →
Continuity (1)
Related Publication 20050022167A1 · Jan 27, 2005