| US 7,516,441 B2 | ||
| Method and system for program editing and debugging in a common language runtime environment | ||
| Jennifer A Hamilton, Bellevue, Wash. (US); Michael M Magruder, Issaquah, Wash. (US); James H Hogg, Bellevue, Wash. (US); William G Evans, Woodinville, Wash. (US); Vance P Morrison, Kirkland, Wash. (US); Lawrence B Sullivan, Renton, Wash. (US); Sean E Trowbridge, Sammamish, Wash. (US); Jason L Zander, Sammamish, Wash. (US); Ian H Carmichael, Sammamish, Wash. (US); Patrick H Dussud, Bellevue, Wash. (US); John L Hamby, Issaquah, Wash. (US); John J Rivard, Redmond, Wash. (US); Li Zhang, Sammamish, Wash. (US); Mario Chenier, Woodinville, Wash. (US); Douglas Rosen, Woodinville, Wash. (US); Steven J Steiner, Seattle, Wash. (US); Peter A Hallam, Seattle, Wash. (US); Brian R Crawford, Seattle, Wash. (US); James S Miller, Bellevue, Wash. (US); Sam Spencer, Redmond, Wash. (US); and Habib Heydarian, Kirkland, Wash. (US) | ||
| Assigned to Microsoft Corporation, Redmond, Wash. (US) | ||
| Filed on Jul. 21, 2004, as Appl. No. 10/896,610. | ||
| Application 10/896610 is a continuation in part of application No. 09/873596, filed on Jun. 04, 2001, granted, now 6,836,884. | ||
| Prior Publication US 2005/0034109 A1, Feb. 10, 2005 | ||
| Int. Cl. G06F 9/44 (2006.01) | ||
| U.S. Cl. 717—110 [717/153; 714/38; 707/103 R] | 16 Claims |

| 1. A computer-readable storage medium containing executable components that when executed on one or more processors implement
an integrated development environment and a common language runtime environment, comprising:
a source code component comprising high-level source code of a computer software program;
an assembly comprising an intermediate language component and metadata associated with the source code component, the intermediate
language component is compiled to create native code associated with the software program;
a user interface that facilitates debugging of the software program;
an application program interface as part of the integrated development environment that facilitates communication between
the user and a common language runtime environment running native code, the integrated development environment receiving a
breakpoint event from the common language runtime environment when the native code is suspended at a breakpoint, facilitating
editing of the high-level source code, determining legality of an edit as each change associated with the edit is made, building
the edit when it is determined to be legal, sending information associated with the edited software program to the common
language runtime environment after the edit is determined by the integrated development environment to be legal, and facilitating
execution of the edited software program in the common language runtime environment, wherein the edit is determined to be
legal when the integrated development environment determines that the common language runtime environment can apply the edits
without error; and
an edit and continue component as part of the common language runtime environment that, in response to receiving notification
of an edit to a function associated with the high-level source code from the integrated development environment while the
associated native code is running, suspends execution of the native code at a breakpoint, sends notification of the suspension
to the integrated development environment, provides current instruction pointer information for a pre-edited version of the
function, and receives new instruction pointer information associated with a new version of the function, the common language
runtime environment continuing execution of the native code from the breakpoint until a remap breakpoint is reached and subsequently
performing a remap operation to facilitate continued execution based on the new instruction pointer information.
|