Abstract:
Embodiments consistent with the present invention relate to methods and computer systems for displaying customizing parameters of an application program, the customizing parameters being stored in database tables. In one embodiment, a method is provided that comprises: executing an application program, and acquiring trace data during execution of the application program, the trace data comprising a path for each of the results provided by the application program, each path being descriptive of a sequence of database table entries of the database tables holding a sub-set of the customizing parameters used for a calculation of the corresponding result. The method may further comprise displaying the results, interactively selecting one of the results for further analysis, and displaying the database table entries identified by the path of the selected one of the results.

Description:
BACKGROUND 
     1. Technical Field 
     The present invention generally relates to the field of data processing. More particularly, embodiments of the present invention relate to the acquisition and analysis of trace data. 
     2. Background Information 
     During the development of a computer program, it often is desirable to test the computer program by providing test data and then executing the computer program to generate test results. A user then may evaluate the test results and modify the computer program based upon the results. During this process, the user may desire to run at least a portion of the computer program several times to assist, for example, in isolating the suspected cause of an error. When, however, a computer program is very large or has a very long execution time, it may be impractical to replay the entire program for evaluation and debugging. Therefore, a technique called incremental replay was developed which allows a user to select and replay only a portion of the computer program&#39;s execution. 
     To provide effective support for debugging and testing computer programs, a replay apparatus must incur low setup and replay times, it must interfere with and slow down the program&#39;s execution as little as possible, and it must not require large amounts of data to be stored. Setup time is the time required to prepare for replay after an original program has been executed at least once. Replay time is the time required to actually re-execute the instructions associated with the desired portion of the computer program. 
     Some approaches minimize setup time while other approaches minimize replay time. During the setup time, variables or memory locations typically are set to values that are accurate for the portion of the computer program that is to be replayed. Typically, this practice includes providing, during or prior to replay, the same values to the memory locations that were present during the initial execution of the program. 
     Interference with the original (first executed) program often is caused by inserting instrumentation instructions into the original program to facilitate replay. If there are too many of such instrumentation instructions or if such instructions are too intrusive, then the original program may be slowed down too much during the initial execution or during the replay. 
     Because replay generally involves some storage during an initial execution of a program, as mentioned above, another consideration is the amount of data to be stored. Although enough data should be stored to accurately replay the desired portions of the original program execution, too much stored data will require excess storage resources as well as unnecessary overhead functions to manage the stored data. 
     One approach to incremental replay uses a virtual memory system of a computer to periodically trace, at fixed time intervals, the pages of the virtual memory system that were modified by a computer program since a previous checkpoint of the computer program. The term “trace,” as used herein, refers to storing data in a memory so that such data is available for later use, such as resetting variables and memory locations. 
     To restart the program&#39;s execution from an intermediate point requires that a replay tool search the stored trace to find the most recent trace of each page. Because checkpoints are taken at fixed time intervals, the system bounds replay time, i.e., the amount of time required to replay up to a desired portion of the original program execution. However, setting up the state for the replay may require searching through an entire trace file, which may involve significant time and resources. Although this approach is adaptive in that it traces only pages that have been recently written to, tracing the entire contents of pages that have been written to since the last checkpoint can require large amounts of storage. 
     Another approach to tracing is performed at compile-time of a program to determine what and when to trace. In particular, a pre-log on the entry of each procedure is written, with the pre-log containing the values of the variables that the procedure might possibly read. The pre-log allows a procedure to be replayed alone since the pre-log contains all variables necessary for the instructions of the procedure to properly execute. A post-log is written upon exit from the procedure, with the post-log containing the values of the variables that the procedure might have modified. The post-log allows the procedure to be skipped during replay since the post-log includes changes that the procedure might make. 
     Such a system may result in storing much more data than is actually required to facilitate replay, because the analysis performed at compile-time must be conservative to assure that any replay will be accurate. Additionally, tracing only at procedure entry and exit may incur a large amount of intrusion during the initial execution of the program, and does not guarantee that replay up to a desired portion of the execution will be attainable in a predetermined amount of time. For example, a loop that is iterated several times and includes a procedure call may result in many needless traces. Conversely, a very long procedure call may not be traced often enough to replay any part of the procedure within time constraints that are acceptable to a user. 
     Another system traces a “change set” before each statement or group of statements. The change set includes the values of the variables which might be modified by the statement or group of statements. A debugger then can backup execution over a statement by restoring the state from the associated change set. To bound the trace size, it is possible to store only the most recent change set for each statement. The system statically computes the change sets, and for programs that use pointers and arrays, the system must trace each such access. The system does not bound the time required to perform a replay, since it requires backing up to an instruction that is prior to the desired interval, and then progressing forward to perform the desired interval. This system is limited by its static nature, in that it may have to trace every array or pointer reference for example. 
     Another technique maintains a hierarchy of checkpoints, each checkpoint taken at successively larger time granularities, so that recent states can be reproduced relatively quickly while older states incur more delay. This technique also includes a virtual snapshot as an approach to check-pointing, in which only the elements of a checkpoint that differ from a previous checkpoint are saved. 
     U.S. Pat. No. 5,870,607 shows a method for selective replay of computer programs. A user can selectively reply portions of a computer program execution so that the entire program need not be run again to support further test and debug. A run-time instrumented version of the program is created by inserting special instructions into the original program. The run-time instrumented version is executed to create trace files of memory accesses and system calls as well as identification of interrupts. 
     U.S. Pat. No. 5,642,478 shows a distributed trace data acquisition system. An event data capture circuit is integrated into each processing node in a distributed multi-node system for capturing even data within each node under software control. 
     U.S. Pat. No. 6,314,530 shows a computer system having an on-chip trace memory having a plurality of locations for storing trace information that indicates execution flow in the processor. 
     Despite such advancements, conventional tracing techniques suffer from one or more disadvantages. For example, a common disadvantage of known tracing techniques is that the ability to review and modify customizing parameters is not supported. 
     The above description is based on the knowledge of the present inventors and not necessarily that known in the art. 
     SUMMARY 
     As further disclosed herein, embodiments consistent with the present invention encompass data processing systems having means for storing database tables holding customizing parameters for customizing an application program. Embodiments consistent with the present invention also relate to application programs, trace programs and analytical programs. 
     In accordance with one embodiment, the results provided by the execution of an application program are stored and displayed for a user&#39;s selection. During execution of the application program, trace data is acquired by the trace program. The trace data comprises a path indication for each of the results. Each path is descriptive of a sequence of database table entries of the database tables holding a sub-set of the customizing parameters used for calculation of the corresponding result. 
     When a user selects one of the displayed results for analysis of the underlying customizing parameters that have been used for calculation of the result by the application program, the path of database table entries being assigned to the result is retrieved from the trace data. This facilitates sequential display of the database table entries identified by the path for a user&#39;s review and/or modification. 
     In accordance with another embodiment of the invention, explanatory text strings are assigned to the database table entries. When a database table entry is to be displayed as it belongs to a path of the user selected result, the text string assigned to that database table entry is retrieved and displayed in conjunction with the database table entry. As a consequence, the displayed trace data is understandable even by a non-expert user. 
     Consistent with a further embodiment of the present invention, a graphical user interface is provided that facilitates a user&#39;s navigation along the path of the selected result. This way, a user can go backwards and forwards along the path of the database table entries on which the calculation of the result by the application program is based. This makes the interaction of the individual database table entries transparent and facilitates a user&#39;s review and/or modification of the customizing parameters stored in the respective database table entries. 
     Embodiments of the present invention may provide one or more advantages over conventional approaches. For example, embodiments of the invention may facilitate review and modification of customizing parameters on which execution of an application program is based. It is to be noted that the structure of customizing information stored as customizing parameters in database tables of a relational database can be of a complex nature. Embodiments of the present invention enable making the structure of the customizing information transparent. This is particularly advantageous for non-expert user&#39;s as no understanding of the program code of the application program is required for a user&#39;s comprehension of the sequence of database table entries on which the calculation of an individual result provided by the application program is based. 
     Additional objects and advantages of embodiments consistent with the invention will be set forth in part in the description which follows, and in part will be obvious from the description, or may be learned by practice of the disclosed embodiments of the invention. The objects and advantages of embodiments of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the appended claims. Embodiments of the invention are disclosed in the detailed description section and in the appended independent and dependent claims. 
     It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as claimed. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate several embodiments of the invention and together with the description, serve to explain the principles consistent with the present invention. In the drawings: 
         FIG. 1  is a block diagram an exemplary data processing system, consistent with an embodiment of the invention; 
         FIG. 2  is a flow chart illustrating an exemplary process for the acquisition of trace data, consistent with an embodiment of the invention; 
         FIG. 3  is a flow chart illustrating an exemplary process for analyzing trace data, consistent with an embodiment of the invention; and 
         FIG. 4  is a schematic output screen illustrating an exemplary graphical user interface, consistent with an embodiment of the invention. 
     
    
    
     DETAILED DESCRIPTION 
     Reference will now be made in detail to embodiments of the invention, examples of which are illustrated in the accompanying drawings. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts. 
       FIG. 1  shows an exemplary data processing system  100 , consistent with an embodiment of the invention. Data processing system  100  includes a graphical user interface  102 , at least one application program  104 , trace program  106 , and analytical tool  108 . Processor  110  serves for execution of these programs. Alternatively, data processing system  100  is a parallel or distributed processing system having a plurality of processors for program execution. 
     Data processing system  100  further includes memory  112  for storing customizing parameters in memory area  114 , for storing results in memory area  116 , for storing trace data in memory area  118 , and for storing explanatory text strings in memory area  120 . 
     In a preferred example considered here, application program  104  may have a number of N modules or objects that perform various program functionalities. Execution of application program  104  by processor  110  on the basis of the customizing parameters stored in memory area  114  provides a number of n results that are stored in memory area  116 . 
     The customizing parameters may be stored in memory area  114  as a relational database having a number of relational database tables, such as T 1 , T 2 , T 3 , T 4 , . . . , Ti, . . . . 
     For example, database table T 1  holds customizing parameters P 1  (T 1 ) P 2  (T 1 ), . . . Pj (T 1 ), . . . . In other words, each one of the database tables Ti may hold a number of parameters {Pj (Ti)}. 
     The database tables of the relational database stored in memory area  114  may hold complex customizing information. The structure of the customizing information that is used for calculation of the results may be described by a number of paths linking individual ones of the database table entries. By way of example, a portion of one of the paths is illustrated in  FIG. 1 . 
     This path starts at entry P 2  (T 1 ) of database table T 1  from where it goes to table entry P 1  (T 4 ) of database table T 4 . From there the path continues to table entry Pj (T 2 ) of database table T 2 , etc. By way of example only and without restriction, generality it is assumed that this path illustrated in  FIG. 1  holds the customizing information that is used for calculation of result  1  provided by application program  104 . 
     Memory area  120  may hold a number of database tables Ti corresponding to the database tables stored in the memory area  114 . In each one of the database tables Ti stored in memory area  120 , an explanatory text string may be assigned to each one of the parameters. In other words, text string j may be assigned to customizing parameter Pj (Ti) of database table Ti. 
     For normal operation of data processing system  100 , application program  104  may be started without trace program  106 . The results which may thus be obtained are stored in memory area  116  and displayed on monitor  122  by means of graphical user interface  102 . If the user is dissatisfied by the displayed results and/or desires to analyze the basis on which the results have been calculated, he or she may start trace program  106 . 
     Next, application program  104  may be executed one more times by processor  110 , while trace data may be acquired by trace program  106  and stored in memory area  118 . Trace program  106  tracks which ones of the database table entries of the relational database stored in memory area  114  are accessed and in which sequence in order to calculate the n results. 
     The trace data may consist of a table T for each one of the results. The table T (result  1 ) may contain a list of the database table entries of the relational database stored in memory area  114  that belong to the path used for calculation of result  1 . The same may apply analogously to the further tables T(result  2 ), . . . , T(result n). This way, trace data is acquired and stored in memory area  118  that contains path information being descriptive of the customizing parameters used for calculation of the corresponding results. 
     After execution of application program  104 , the acquired trace data stored in memory area  118  can be analyzed by means of analytical tool  108 . 
     The user can select one of the results provided by execution of application program  104  by means of graphical user interface  102 . Analytical tool  108  can retrieve the table T corresponding to the selected result from memory area  118 . Analytical tool  108  reads the value of the first element of the sequence, e.g., P 2  (T 1 ) from the corresponding database table T 1  stored in memory area  114  if result  1  is selected and displays the value by means of graphical user interface  102 . 
     Further, analytical tool  108  can retrieve the explanatory text string belonging to the first element of the path, e.g., P 2  (T 1 ) from memory area  120 . In other words, text  2  assigned to P 2  (T 1 ) in table T 1  stored in memory area  120  is displayed in conjunction with the value of that customizing parameter P 2  (T 1 ). By means of graphical user interface  102 , the user can navigate along the path belonging to the selected result. This will be explained in more detail by making reference to the example shown in  FIG. 4 . 
       FIG. 2  shows a flow chart of an exemplary process for the acquisition of trace data. In step  200 , the trace program is started. Next, in step  202 , the application program can be started. In step  204 , trace data may be acquired during execution of the application program. 
     The acquired trace data may include at least path information regarding the sub-sets of the database table entries stored in the customizing parameter memory area that have been used for calculation of the results. Hence, the acquired trace data acquisition may contain lists, i.e., tables T(result), being descriptive of the database table entries that have been used for calculation of a result. 
     After termination of the application program (step  206 ), the analytical tool can be started in step  208 . By means of the analytical tool, a user can review and/or modify the customizing parameter settings that have been used as a basis for calculation of the results (step  210 ). The review and/or modification process of step  210  is explained in greater detail by making reference to the flowchart and exemplary embodiment of  FIG. 3 . 
     In step  300  of  FIG. 3 , the results provided by the application program are displayed. In step  302 , the user selects one of the results for further analysis. In step  304 , index m is initialized (e.g., m=1). In step  306 , the first element of the customizing parameter path belonging to the selected result can be retrieved and its value is read from the relational database. For example, if result  1  has been selected for analysis, the first element of the trace data table T (result  1 ) stored in memory area  118  (cf.  FIG. 1 ), i.e., parameter P 2  (T 1 ), can be read and its value is retrieved from the relational database stored in memory area  114 . 
     The explanatory text string assigned to the first element of the customizing parameter path can be retrieved from the corresponding table stored in memory area  120  in step  308 . In step  310 , the first element of the customizing parameter path may be displayed in conjunction with its explanatory text string. In step  312 , the user has the option to modify the first element. If the user does not enter a new value for the first element, the first element remains unchanged. Otherwise, the relational database stored in memory area  114  can be updated with the new value of the first element i.e. P 2  (T 1 ) in the example considered here. 
     In step  314 , the index m may be incremented and the control goes back to step  306 . Steps  306  to  314  can be repeated until the complete customizing parameter path of the trace data of the selected result has been ‘scanned’ for review and/or modification of the user. 
     Depending on the implementation, the user may stop the scan along the customizing parameter path at any time in order to jump backwards or forwards along the path or for selection of another result for analysis and/or modification. 
       FIG. 4  shows an exemplary embodiment consistent with the present invention, including an interactive window  400  of analytical tool  108  that may be provided by graphical user interface  102 . As illustrated in  FIG. 4 , window  400  may include a results section  402  for the display of the n results provided by execution of application program  104  (cf.  FIG. 1 ). 
     Further, window  400  may include an output field  404  for outputting of the value of a customizing parameter and an output field  406  for outputting of the explanatory text being assigned to the customizing parameter displayed in output field  404 . Input field  408  serves for a user&#39;s input of a new value of the customizing parameter shown in output field  404 . Navigation buttons  410 ,  412  serve for a user&#39;s navigation along a selected customizing parameter path. 
     In operation, the user starts the analytical tool  108  (cf.  FIG. 1 ) after acquisition of trace data by trace program  106  during execution of application program  104 . Analytical tool  108  displays the n results provided by application program  104 . The user can select one of the n results by clicking on the display of the corresponding result in result section  402 . 
     In response, the value of the first customizing parameter of the customizing parameter path belonging to the selected result can be displayed in output field  404  and the explanatory text belonging to the first customizing parameter in the customizing parameter path is displayed in output field  406 . By clicking on navigation button  412 , the user can go to the next customizing parameter along the customizing parameter path belonging to the selected result. Likewise, the user can go backwards along the customizing parameter path by clicking on navigation button  410 . Depending on the implementation, additional navigation buttons can be provided in order to facilitate a user&#39;s navigation along the selected customizing parameter path. 
     If a user desires to modify a customizing parameter, he or she can enter a new value for the customizing parameter in input field  408 . In response to pressing the enter button, the previous value of the customizing parameter shown in output field  404  is updated by the new value. 
     Embodiments of the invention can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in any combination thereof. Embodiments of the invention can be implemented as a computer program product, i.e., a computer program tangibly embodied in an information carrier, e.g., in a machine-readable storage device or in a propagated signal, for execution by, or to control the operation of, data processing apparatus, e.g., a programmable processor, a computer, or multiple computers. A computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program can be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network. 
     Methods consistent with the present invention can be performed by one or more programmable processors executing a computer program to perform functions or steps of such methods by operating on input data and generating output. Method steps can also be performed by, and apparatus of the invention can be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit). 
     Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are at least one processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. Information carriers suitable for embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in special purpose logic circuitry. 
     To provide for interaction with a user, the invention can be implemented on a computer having a display device, e.g., a cathode ray tube (CRT) or liquid crystal display (LCD) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. 
     Other embodiments of the invention will be apparent to those skilled in the art from consideration of the specification and practice of embodiments of the invention disclosed herein. It is intended, therefore, that the specification and examples be considered as exemplary only, with a true scope and spirit of the invention being indicated by the following claims.