← Back to Patent Explorer
US6311327B1 Expired / Lapsed US ⏱️ 0.0 years remaining

Method and apparatus for analyzing software in a language-independent manner

Assignee: NXP USA Inc
•
Filing: 1999-02-12
•
Granted: 2001-10-30
•
Expires: 2019-02-12
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A software analysis system for capturing tags generated by tag statements in instrumented source code. The software analysis system includes a probe that monitors the address and data bus of the target system. When a tag statement is executed in the target system, a tag is written to a predetermined location in the address space of the target. The tag contains a tag value that is indicative of the location in the source code of the tag statement generating the tag. By monitoring the predetermined address, the probe is able to capture tags as they are written on the data bus of the target system. The source code instrumenter includes a language-dependent parser and a language-independent analyzer that records tagging data in a symbol database. The software analysis system may reference the tagging data in the symbol database while testing instrumented source code. The software analysis system performs a variety of analysis functions in essentially real time, including code coverage, function and task execution times, memory allocation, call pairs, and program tracing.

Inventors

  • 👤 Stephen Caine O'Brien
  • 👤 Sidney R. Maxwell, III

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-03 11:36
CPC Classifications
G; G06; G06F; G06F11/00; G06F11/36; G06F11/362; G06F11/3636; G06F11/364; G06F11/30; G06F11/34; G06F11/3466; G06F11/3624

Claims Analysis

Total Claims: 36
Claim 1
Independent Claim 80 words
A system for instrumenting a computer program having source code with a plurality of tag statements, each tag statement specifying a unique value for a tagging variable, the system comprising: a programming language-dependent parser that examines the source code and inserts the tag statements into the source code according to predetermined criteria to produce instrumented source code; and a programming language-independent instrumenter that determines unique values for the tagging variable associated with the tag statements inserted into the source code.
Claim 2
Independent Claim 80 words
A system for instrumenting a computer program having source code with a plurality of tag statements, each tag statement specifying a unique value for a tagging variable, the system comprising: a programming language-dependent parser that examines the source code and inserts the tag statements into the source code according to predetermined criteria to produce instrumented source code; and a programming language-independent instrumenter that determines unique values for the tagging variable associated with the tag statements inserted into the source code.
Claim 3
Dependent Claim 41 words
The system of claim 1 wherein the programming language-independent instrumenter selects a tagging statement based upon a set of characteristics common to more than one programming language and wherein a programming language of the source code includes the set of characteristics.
Claim 4
Dependent Claim 46 words
The system of claim 1 , wherein the language-independent instrumenter comprises: a language-independent analyzer that selects the unique values for the tagging variables and analyzes the source code; and a symbolic database that stores data related to the programming language-independent analyzer analysis of the source code.
Claim 5
Dependent Claim 23 words
The system of claim 1 wherein the programming language-dependent parser parses the instrumented source code for a compiler that produces instrumented object code.
Claim 6
Dependent Claim 29 words
The system of claim 1 wherein the programming language-dependent parser provides the instrumented source code to a compiler that parses the instrumented source code to produce instrumented object code.
Claim 7
Dependent Claim 37 words
The system of claim 1 , further comprising: a symbol database that stores tagging data sent from the programming language-independent instrumenter and that retrieves the tagging data for an instrumentation apparatus monitoring operation of the computer program.
Claim 8
Dependent Claim 59 words
The system of claim 6 , further comprising: an information retrieval application programming interface that resides between the symbol database and the instrumentation apparatus and receives requests for the tagging data from the instrumentation apparatus, locates the tagging data in the symbol database, and forwards the tagging data to the instrumentation apparatus without regard to the source code language.
Claim 9
Dependent Claim 46 words
The system of claim 1 wherein the language-independent instrumenter includes an information entry application programming interface that communicates with the language-dependent parser according to a communications format of the language-dependent parser and communicates with a language-independent analyzer according to a communications format of the language-independent analyzer.
Claim 10
Dependent Claim 70 words
The system of claim 1 wherein at least some of the inserted tag statements have a tag type field corresponding to an analysis function for which the tag is used, and wherein the language-independent instrumenter stores the tag type field in a symbol database for later retrieval by a processor that processes the tags differently according to their respective analysis functions based on respective values in the tag type field.
Claim 11
Dependent Claim 79 words
The system of claim 1 wherein the language-dependent parser inserts the tag statements in the source code at locations causing respective tag statements to be executed along with a plurality of function call and return statements, and wherein the system further comprises a call pair analyzer that determines which functions of the source code are linked to other functions of the source code based on an order in which the tags are captured during execution of the computer program.
Claim 12
Dependent Claim 32 words
The system of claim 10 wherein the call pair analyzer further includes means for compiling a record of a number of times that specific called functions are called by specific calling functions.
Claim 13
Dependent Claim 33 words
The system of claim 10 wherein the call pair analyzer further includes means for compiling a statistical record of a relatively frequency at which specific called functions are called by specific calling functions.
Claim 14
Dependent Claim 73 words
The system of claim 1 wherein the language-dependent parser inserts the tag statements into the source code at locations causing respective tag statements to be executed with a plurality of conditional decision points in the computer program, and wherein the system further comprises a decision point analyzer that determines when a decision point in the source code has been executed based on which the tags are captured during execution of the computer program.
Claim 15
Dependent Claim 65 words
The system of claim 1 wherein the language-dependent parser inserts the tag statements into the source code at locations causing respective tag statements to be executed with a plurality of memory allocation and deallocation statements in the computer program, and wherein the system further comprises a memory point analyzer that determines where memory space has been allocated or deallocated during execution of the computer program.
Claim 16
Dependent Claim 59 words
The system of claim 1 wherein the language-dependent parser inserts the tag statements in the source code at locations causing respective tag statements to be executed along with a plurality of data manipulation statements, and wherein the system further comprises a data manipulation analyzer that analyzes where and how data has been manipulated during execution of the computer program.
Claim 17
Dependent Claim 71 words
The system of claim 1 wherein the source code has at least one programming language and at least another programming language and the programming language-dependent parser examines the source code having the at least one programming language, the system further comprising: another programming language-dependent parser that examines the source code having the at least another programming language and inserts tag statements according to the predetermined criteria to produce instrumented source code.
Claim 18
Dependent Claim 54 words
The system of claim 16 wherein the programming language-independent instrumenter determines unique values for the tagging variable associated with the tag statements inserted by the programming language-dependent parser and the another programming language-dependent parser and stores tagging data provided by the programming language-dependent parser and the another programming language-dependent parser in a symbol database.
Claim 19
Dependent Claim 208 words
The system of claim 1 wherein the computer program is executed in a target system having a data bus and an address bus, the instrumented source code having been used to produce instrumented executable code containing a plurality of executable tag statements which, when executed, cause the target system to write at least one tag to respective predetermined locations in an address space of the target system, the tags containing respective tag values corresponding to locations in the instrumented source code of the tag statements, the system further comprising: a symbol database that stores tagging data provided by the programming language-independent analyzer; a probe connected to the address and data busses of the target system while the target system is executing the instrumented executable code, the probe detecting when the predetermined location in the address space of the target system is being addressed, the probe capturing a tag on the data bus of the target system when the probe detects that the predetermined location has been addressed; and a processor connected to the probe, the processor determining the code locations that have been executed by referencing the tagging data stored in the symbol database and comparing the tagging data with the respective tag values of the captured tags.
Claim 20
Independent Claim 69 words
A method for instrumenting a computer program having language-dependent source code with a plurality of tag statements, each tag statement specifying a unique value for a tagging variable, the method comprising: parsing the language-dependent source code and inserting the tag statements according to predetermined criteria to produce language-dependent instrumented source code; and determining unique values for the tagging variable associated with the tag statements in a programming language-independent instrumenter.
Claim 21
Independent Claim 69 words
A method for instrumenting a computer program having language-dependent source code with a plurality of tag statements, each tag statement specifying a unique value for a tagging variable, the method comprising: parsing the language-dependent source code and inserting the tag statements according to predetermined criteria to produce language-dependent instrumented source code; and determining unique values for the tagging variable associated with the tag statements in a programming language-independent instrumenter.
Claim 22
Dependent Claim 24 words
The method of claim 19 wherein the parsing of the language-dependent source code is performed by a parser that also produces instrumented object code.
Claim 23
Dependent Claim 28 words
The method of claim 19 wherein the language-dependent instrumented source code is provided to a compiler that compiles the language-dependent instrumented source code to produce instrumented object code.
Claim 24
Dependent Claim 37 words
The method of claim 19 , further comprising: storing tagging data provided by the programming language-independent instrumenter in a symbol database; and retrieving the tagging data for an instrumentation apparatus that monitors operation of the computer program.
Claim 25
Dependent Claim 76 words
The method of claim 22 wherein an information retrieval application programming interface resides between the symbol database and the instrumentation apparatus, the method further comprising the steps of: receiving requests by the information retrieval application programming interface for the tagging data from the instrumentation apparatus; locating the tagging data in the symbol database by the information retrieval application programming interface; and forwarding the tagging data to the instrumentation apparatus by the information retrieval application programming interface.
Claim 26
Dependent Claim 50 words
The method of claim 19 wherein the language-independent instrumenter includes an information entry application programming interface that communicates with a parser that parses the language-dependent source code according to a communications format of the parser and communicates with a symbol database according to a communications format of the symbol database.
Claim 27
Dependent Claim 80 words
The method of claim 19 wherein at least some of the tag statements have a tag type field corresponding to an analysis function for which the tag is used, further comprising the steps of: storing the tag type field in a symbol database by the language-independent instrumenter; and retrieving the tag type field from the symbol database by a processor that processes the tags different according to their respective analysis functions based on respective values in the tag type field.
Claim 28
Dependent Claim 74 words
The method of claim 19 , further comprising the steps of: inserting the tag statements in the language-dependent source code at locations causing respective tag statements to be executed along with a plurality of function call and return statements; and determining which functions of the language-dependent source code are linked to other functions of the language-dependent source code based on an order in which the tags are captured during execution of the computer program.
Claim 29
Dependent Claim 29 words
The method of claim 26 , further comprising the step of: compiling a record of a number of times that specific called functions are called by specific calling functions.
Claim 30
Dependent Claim 30 words
The method of claim 26 , further comprising the step of: compiling a statistical record of a relatively frequency at which specific called functions are called by specific calling functions.
Claim 31
Dependent Claim 66 words
The method of claim 19 , further comprising the steps of: inserting the tag statements in the language-dependent source code at locations causing respective tag statements to be executed along with a plurality of conditional decision points in the language-dependent source code; and determining which decision points in the language-dependent source code have been executed based on the tags captured during execution of the computer program.
Claim 32
Dependent Claim 69 words
The method of claim 19 , further comprising the steps of: inserting the tag statements in the language-dependent source code at locations causing respective tag statements to be executed with a plurality of memory allocation and deallocation statements in the computer program; and determining where memory space has been allocated or deallocated during execution of the computer program based on the tags captured during execution of the computer program.
Claim 33
Dependent Claim 58 words
The method of claim 19 , further comprising the steps of: inserting the tag statements in the language-dependent source code at locations in the language-dependent source code corresponding to data manipulation statements; and analyzing where and how data has been manipulated during execution of the computer program based on the tags captured during execution of the computer program.
Claim 34
Dependent Claim 96 words
The method of claim 19 wherein the source code has at least one programming language and at least another programming language, and wherein the parsing the source code, further comprising the steps of: parsing the source code of the at least one programming language and inserting tag statements according to predetermined criteria to produce instrumented source code of the at least one programming language; and parsing the source code of the at least another programming language and inserting tag statements according to predetermined criteria to produce instrumented source code of the at least another programming language.
Claim 35
Dependent Claim 79 words
The method of claim 32 wherein the programming language instrumenter determines unique values for the tagging variable associated with the tag statements inserted into the source code of the at least one programming language and inserted into the source code of the at least another programming language and stores tagging data associated with both the source code of the at least one programming language and the source code of the at least another programming language in a symbol database.
Claim 36
Dependent Claim 170 words
The method of claim 19 wherein the computer program may be executed in a target system having a data bus and an address bus, the instrumented source code having been used to produce instrumented executable code containing a plurality of executable tag statements which, when executed, cause the target system to write at least one tag to respective predetermined locations in the address space of the target system, the tags containing respective tag values corresponding to locations in the instrumented source code of tag statements, the method further comprising the steps of: allowing the target system to execute the executable code; monitoring the address and data busses of the target system while the target system is executing the software; detecting when the predetermined location in the address space of the target system is being addressed; capturing a tag on the data bus when addressing of the predetermined location is detected; and determining the source code locations that have been executed based on the respective tag values of the captured tags.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2004-10-29 2005-04-30 2005-10-30 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2008-10-29 2009-04-30 2009-10-30 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2012-10-29 2013-04-30 2013-10-30 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag