Method using a computer for automatically instrumenting a computer program for dynamic debugging
First Claim
1. A method using a computer for instrumenting in real time a computer program source code to facilitate the detection of runtime errors, the computer program being represented by a parse tree, each such runtime error having at least one instrumentation rountine for communicating an occurence of the associated runtime error to an error-checking engine, each such instrumentation routine being represented by a parse tree fragment, comprising the steps of:
- performing a real time flow analysis on the parse tree for the computer program to determine an appropriate instrumentation routine for detecting the runtime errors;
instrumenting in real time the parse tree for the computer program by grafting the parse tree fragment for each such instrumentation routine onto the parse tree for the computer program;
generating executable object code from the grafted parse tree containing references to the instrumentation routines; and
executing the generated object code on a computer by transferring the runtime errors to the error-checking engine and linking the error-checking engine with the computer program to determine errors.
0 Assignments
0 Petitions
Accused Products
Abstract
A method for automatically instrumenting a computer program for dynamic debugging. Such a computer program comprising source code written in a programming language for executing instructions on the computer. The source code is provided as a sequence of statements in a storage device to the computer. Each of the statements are separated into tokens representing either an operator or at least one operand. A parse tree is built according to a set of rules using the set of tokens. The parse tree is instrumented to create an instrumented parse tree for indicating that an error condition occurred in the computer program during execution. Object code is generated from the instrumented parse tree and stored in a secondary storage device for later execution using an error-checking engine that indicates error conditions present in the computer program.
-
Citations
50 Claims
-
1. A method using a computer for instrumenting in real time a computer program source code to facilitate the detection of runtime errors, the computer program being represented by a parse tree, each such runtime error having at least one instrumentation rountine for communicating an occurence of the associated runtime error to an error-checking engine, each such instrumentation routine being represented by a parse tree fragment, comprising the steps of:
-
performing a real time flow analysis on the parse tree for the computer program to determine an appropriate instrumentation routine for detecting the runtime errors; instrumenting in real time the parse tree for the computer program by grafting the parse tree fragment for each such instrumentation routine onto the parse tree for the computer program; generating executable object code from the grafted parse tree containing references to the instrumentation routines; and executing the generated object code on a computer by transferring the runtime errors to the error-checking engine and linking the error-checking engine with the computer program to determine errors. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A system for instrumenting a computer program to facilitate the detection of runtime errors, the computer program being represented by a parse tree, each such runtime error having at least one instrumentation routine for communicating an occurrence of the associated runtime error to an error-checking engine, each such instrumentation routine being represented by a parse tree fragment, comprising:
-
means for performing a real time flow analysis on the parse tree for the computer program to determine an appropriate instrumentation routine for detecting the runtime errors; means for instrumenting in real time the parse tree for the computer program by grafting the parse tree fragment for each such instrumentation routine onto the parse tree for the computer program; means for generating executable object code from the grafted parse tree containing references to the instrumentation routines; and means for executing the generated object code by transferring the runtime errors to an error-checking engine and linking the error-checking engine with the computer program to determine errors.
-
-
8. A method using a computer for instrumenting an intermediate representation of a computer program for dynamic debugging, comprising the steps of:
-
creating in real time the intermediate representation of the computer program in the computer by translating source code comprising the computer program into an equivalent intermediate form; analyzing in real time the intermediate representation of the computer program for instruction flow for determining an appropriate type of instrumentation for use in dynamic debugging; augmenting in real time the intermediate representation of the computer program with at least one further intermediate representation wherein the at least one further intermediate representation comprises the appropriate type of instrumentation translated into the equivalent intermediate form; generating executable object code from the augmented intermediate representation of the computer program containing references to the instrumentation routines and storing the executable code in the computer; and executing the executable object code by transferring runtime errors to an error-checking engine and linking the error-checking engine with the computer program to determine errors. - View Dependent Claims (9, 10, 11, 12, 13)
-
-
14. A method using a computer for instrumenting an intermediate representation of a computer program for dynamic debugging, comprising the steps of:
-
creating the intermediate representation of the computer program in the computer by translating source code comprising the computer program into an equivalent intermediate form consisting of at least an additional sequence of code instructions; analyzing in real time the additional sequence of code instructions to determine an appropriate type of instrumentation for use in the dynamic debugging; augmenting in real time the additional sequence of code instructions with further code instructions to invoke the appropriate type of instrumentation; generating executable object code containing references to the instrumentation routines using the augmented sequence of additional code and storing the executable code in the computer, and executing the executable code by transferring runtime errors to an error-checking engine and linking the error-checking engine with the computer program to determine errors. - View Dependent Claims (15, 16, 17, 18, 19, 20, 21)
-
-
22. A method using a computer for dynamic debugging, comprising the steps of:
-
initiating compilation of a computer program; interrupting the compilation of a computer program in order to capture the intermediate representation of the computer program created by the compilation process; augmenting in real time the intermediate representation of the computer program to add instrumentation for use in dynamic debugging; reinitiating the compilation process to generate executable object code containing references to the instrumentation routines; executing the object code by transferring runtime errors to an error-checking engine and linking the error-checking engine with the computer program to determine errors.
-
-
23. A method using a computer for instrumenting in real time a computer program source code to facilitate the detection of runtime errors, the computer program being represented by a parse tree, each such runtime error having at least one instrumentation routine for communicating an occurrence of the associated runtime error to an error-checking engine, each such instrumentation routine being represented by a parse tree fragment, comprising the steps of:
-
performing a real time flow analysis on the parse tree for the computer program to determine an appropriate instrumentation routine for detecting the runtime errors; instrumenting in real time the parse tree for the computer program by grafting the parse tree fragment for each such instrumentation routine onto the parse tree for the computer program; generating executable object code from the grafted parse tree containing references to the instrumentation routines; and continuously executing the generated object code on the computer by transferring runtime errors to an error-checking engine and linking the error-checking engine with the computer program to determine errors. - View Dependent Claims (24, 25, 26, 27, 28)
-
-
29. A system for instrumenting in real time a computer program source code to facilitate the detection of runtime errors, the computer program being represented by a parse tree, each such runtime error having at least one instrumentation routine for communicating an occurrence of the associated runtime error to an error-checking engine, each such instrumentation routine being represented by a parse tree fragments comprising:
-
means for performing a real time flow analysis on the parse tree for the computer program to determine an appropriate instrumentation routine for detecting the runtime errors; means for instrumenting in real time the parse tree for the computer program by grafting the parse tree fragment for each such instrumentation routine onto the parse tree for the computer program; means for generating executable object code from the grafted parse tree containing references to the instrumentation routines; and means for continuously executing the generated object code by transferring runtime errors to an error-checking engine and linking the error-checking engine with the computer program to determine errors.
-
-
30. A method using a computer for instrumenting in real time an intermediate representation of a computer program for dynamic debugging, comprising the steps of:
-
creating the intermediate representation of the computer program in the computer by translating source code comprising the computer program into an equivalent intermediate form; analyzing in real time the intermediate representation of the computer program for instruction flow for determining an appropriate type of instrumentation for use in dynamic debugging; augmenting in real time the intermediate representation of the computer program with at least one further intermediate representation wherein the at least one further intermediate representation comprises the appropriate type of instrumentation translated into the equivalent intermediate form; generating executable object code containing references to the instrumentation routines from the augmented intermediate representation of the computer program and storing the executable code in the computer; and continuously executing the generated object code by transferring runtime errors to an error-checking engine and linking the error-checking engine with the computer program to determine errors. - View Dependent Claims (31, 32, 33, 34, 35)
-
-
36. A method using a computer for instrumenting in real time an intermediate representation of a computer program source code for dynamic debugging, comprising the steps of:
-
creating the intermediate representation of the computer program in the computer by translating source code comprising the computer program into an equivalent intermediate form consisting of at least an additional sequence of code instructions; analyzing in real time the additional sequence of code instructions to determine an appropriate type of instrumentation for use in the dynamic debugging; augmenting in real time the additional sequence of code instructions with further code instructions to invoke the appropriate type of instrumentation; generating executable object code containing references to the instrumentation routines using the augmented sequence of additional code and storing the executable code in the computer; and continuously executing the executable code by transferring runtime errors to an error-checking engine and linking the error-checking engine with the computer program to determine errors. - View Dependent Claims (37, 38, 39, 40, 41, 42, 43)
-
-
44. A method using a computer for dynamic debugging, comprising the steps of:
-
initiating compilation of a computer program; interrupting the compilation of a computer program in order to capture the intermediate representation of the computer program created by the compilation process; augmenting in real time the intermediate representation of the computer program to add instrumentation for use in dynamic debugging; reinitiating the compilation process to generate executable object code containing references to the instrumentation routines; continuously executing the object code by transferring runtime errors to an error-checking engine and linking the error-checking engine with the computer program to determine errors.
-
-
45. A method using a computer for instrumenting an intermediate representation of a computer program for dynamic debugging, comprising the steps of:
-
creating the intermediate representation of the computer program in the computer by translating source code comprising the computer program into an equivalent intermediate form; analyzing in real time the intermediate representation of the computer program for instruction flow for determining an appropriate type of instrumentation for use in dynamic debugging; augmenting in real time the intermediate representation of the computer program with at least one further intermediate representation wherein the at least one further intermediate representation comprises the appropriate type of instrumentation translated into the equivalent intermediate form; generating executable object code containing references to the instrumentation routines from the augmented intermediate representation of the computer program and storing the executable code in the computer; and executing the code executable in real time by transferring runtime errors to an error-checking engine and linking the error-checking engine with the computer program to determine errors. - View Dependent Claims (46, 47, 48, 49, 50)
-
Specification