Browse Prior Art Database

System and Method Enabling Navigation between Output Artifacts and Source Code

IP.com Disclosure Number: IPCOM000195705D
Publication Date: 2010-May-12
Document File: 2 page(s) / 27K

Publishing Venue

The IP.com Prior Art Database

Abstract

In order to enable the debug or performance tuning of a given program, programmers often add statements into the program which log one or more bits of execution information, this information being written to a file called a trace log. To analyze a program, e.g. debug it, a programmer executes the program having the trace log created, and then reviews the trace log to determine where the error in computation occurred. To successfully use this trace-log based development technique, it is critical to be able to determine which line of source code produced each given trace log entry. Suppose, for example, that the source code is on the form: accountBalanceCalculator() { routineAAA(); routineBBB(); } where both routineAAA and routineBBB perform some computation in determining the value of accountBalance. Also suppose that each routine prints its final value of accountBalance to the trace log. Now, suppose that the trace log contains the statement: accountBalance = $999.00. The programmer can find the matching lines of source code (e.g., using grep, perl, or within an IDE, such as IBM’s RAD or GNU’s EMACS), the programmer can search for all printing code lines containing "accountBalance = ." Another method for the programmer to find the matching lines of source code is for the programmer to have use a special Class (e.g., Java). Given that such a class is sued, the programmer can search for all output statements from this class that include the string "accountBalance = ." Despite the fact that this information is accessing using the methods described above, without any further information, the programmer trying to analyze accountBalanceCalculator does not know whether this trace log entry was produced by routineAAA or routineBBB, and, thus, is limited in the ways they can use the trace log entry’s information. To overcome this problem, programmer’s have tried prepending each trace log entry with the ID of the routine; e.g., routineAAA: accountBalance = $999.00 or routineBBB: accountBalance = $999.00 Unfortunately, this solution not handle the case where each routine prints the value of accountBalance from several different places. It also doesn’t address the fact that often a given complex program has several routines (methods) with the same ID. For example, in a Java program, both the class Employee and the class Company might have an address() method. If a given trace log entry began with "address:" one would still not know which bit of code produced the given entry. These problems are exacerbated by parallel software in which the trace output of multiple instances of running code are generally interleaved within a single trace file. Adding the name of the class still does not solve the problem, since a given complex program might contain several packages, each defining a common Class (e.g., Date). The other problem with trying to require all programmers of a given complex program to adhere to particular trace-log-entry-writing rules, is that one or more programmers may fail to do so. This is particularly likely for a complex program that is constantly updated over a long period of time - a common case for large-scale, high value software products (e.g., IBM’s DB2 and WebSphere).

This text was extracted from a PDF file.
At least one non-text object (such as an image or picture) has been suppressed.
This is the abbreviated version, containing approximately 58% of the total text.

Page 1 of 2

System and Method Enabling Navigation between Output Artifacts and Source Code

Pseudo-claims:

1. A method enabling a user to navigate from an output artifact (e.g. a trace log entry) to the source

code that generated the artifact, the method consisting of the following steps:

- displaying a collection of output artifacts (e.g., a list of trace log entries) generated by the

execution of an executable version of a collection of source code (e.g.,

f

source code language is Smalltalk or PERL; or compiled & linked object code if source is

    C);
- selecting an output artifact;
- displaying the particular line(s) of the code that generated the selected output artifact.

2. A method of claim 1 wherein the particular line of source code is shown in the context of the rest

of the collection of source code.

3. A method enabling a user to navigate from a line of source code to the output artifacts (e.g., trace

log entries) that it generated, the method consisting of the following steps:

- displaying a collection of source code;
- obtaining a collection of output artifacts resulting from an executable version of the

    source code;
- selecting a line (or executable subset) of the collection of source code;
- displaying the one or more output artifacts generated by the selected line of code.

4. A method of claim 3, including the additional step of:
- producing an alert if the selected line of source code did not produce any artifacts.

5. A method of 1 and 3 wherein the output artifacts in...