IBM® is a registered trademark of International Business Machines Corporation, Armonk, N.Y., U.S.A. Other names used herein may be registered trademarks, trademarks or product names of International Business Machines Corporation or other companies.
1. Field of the Invention
This invention relates to program tracing and debugging, and particularly to methods, systems, and computer program products for compensating for disruption caused by trace enablement.
2. Description of Background
Enabling trace on a process, such as an application server oftentimes changes the event timing of the process. The change in timing may prevent the recreation of some problems which is known to make debugging and solving a problem more difficult and time consuming. Some current solutions include providing the ability to perform traces with varying granularity that allows for more or less trace to be collected. This potentially gives a user less trace than they really need, since choosing the level of trace involves some measure of guesswork.
What is needed, therefore, is a way to compensate for the change in timing from enabling trace points in a manner that provides an optimum level of trace in order to facilitate the detection of problems that occur during execution of a program.
The shortcomings of the prior art are overcome and additional advantages are provided through the provision of methods, systems, and computer program products for compensating for disruption caused by trace enablement. The method includes receiving a selected target to run a program, receiving a selected program that has been identified as having a problem, and receiving a selected trace type. The method also includes enabling a trace compensator for identifying non-critical code in the selected program. The non-critical code is determined by the trace type. The method further includes running the program with a trace to identify the problem, the trace compensator causing the program to suppress the non-critical code for problem reproduction to adjust for timing discrepancies.
Additional features and advantages are realized through the techniques of the present invention. Other embodiments and aspects of the invention are described in detail herein and are considered a part of the claimed invention. For a better understanding of the invention with advantages and features, refer to the description and to the drawings.
As a result of the summarized invention, technically we have achieved a solution which compensates for the change in timing from enabling trace points in a manner that provides an optimum level of trace in order to facilitate the detection of problems that occur during execution of a program.
The subject matter which is regarded as the invention is particularly pointed out and distinctly claimed in the claims at the conclusion of the specification. The foregoing and other objects, features, and advantages of the invention are apparent from the following detailed description taken in conjunction with the accompanying drawings in which:
The detailed description explains the preferred embodiments of the invention, together with advantages and features, by way of example with reference to the drawings.
Turning now to
Applications 110 (i.e., business/enterprise applications) may include, for example, web artifacts, such as a servlet. If host system 102 utilizes Java-based programming tools, these applications may include, e.g., Enterprise Java Beans (EJBs) or Java Server Pages (JSPs), to name a couple. Host system 102 also includes memory, which may be internal to the host system 102, external to the host system 102, or a combination thereof. The memory, or storage 112, is physically and/or logically coupled to the host system 102. As shown in
Client system 104 may comprise a workstation or other general-purpose computer device. Client system 104 may be implemented by a software engineer or tester, a network administrator, or information technology (IT) specialist. Client system 104 executes various applications including an operating system and system utilities 114 for monitoring and managing the applications and processes executing on host system 102. System utilities 114 include a diagnostics utility that includes one or more trace tools. Various trace types, e.g., security trace, database process trace, server process trace, may be implemented via diagnostics utility 116. Diagnostics utility 116 may also include a debugging program. The diagnostics utility 116 is in communication with the trace compensator 118 for implementing the trace timing compensation processes described herein.
In addition, a viewer 120 is also executing on client system 104 for enabling the graphical display of traces resulting from the trace timing compensation activities.
The aforementioned system components of
Network 106, may be a local network (e.g., LAN), a wide area network, or internetwork (e.g., Internet). Alternatively, the client system 104 may be in direct communication with host system 102 via, e.g., physical cabling or wireless means.
Turning now to
At step 204, the trace compensator 118 receives the selected program to run, followed by the selected trace type at step 206. The trace type selection may determine the means by which the trace compensator 118 performs the timing compensation processes. For example, JDK may be used to manage the particular portion of code that is skipped during runtime. Several groups of SystemOut messages, method signatures, code templates, etc., might be assembled depending upon the type of trace. This may be accomplished by identifying the code via a list of packages and classes from which methods will not be invoked or a list of methods not to be invoked. Alternatively, the code may be identified by a source code or byte code template that is slipped by the compiler or JVM when encountered. For example, all FFDC branches could be stubbed out in the template as:
Then this would be skipped in the source code (in the native compilation case) or would be converted to bytecode (in the JVM case) and when the JVM encounters the bytecode, it would mark that branch to be slipped.
When a trace string is selected, the trace compensator 118 would identify related things that are not likely to be necessary for the bug recreation. For instance, on a workload management enabled trace, communication related items would stay normal, but perhaps some security messages and function would be suppressed. In exemplary embodiments, the trace compensation service may be built, configured and run in three stages as described herein.
In a first stage (e.g., in an application development stage using, e.g., WebSphere® Application server), an application is built by developers using suitable, existing that including adding tracing points to existing application architecture for debugging issues. In a second stage (tracing and debugging development), component level application tracing points are identified and added into a compensation table, a sample of which is provided below.
The compensation table above outlines different levels of compensation for different components inside of the application. As the level of the compensation rises, the features that are being disabled to compensate for tracing become more risky and invasive on the system and application.
In a third stage (production level configuration), once tracing is enabled, the service 118 defaults to level 1 for every component so a user (e.g., user of client system 104) does not need to directly configure the service 118. If the user decides the trace compensation is not helpful in offsetting the overhead of tracing, he/she may either configure individual components in order to have a higher level of compensation applied, or raise the server wide defaults for compensation.
Returning now to
The capabilities of the present invention can be implemented in software, firmware, hardware or some combination thereof.
As one example, one or more aspects of the present invention can be included in an article of manufacture (e.g., one or more computer program products) having, for instance, computer usable media. The media has embodied therein, for instance, computer readable program code means for providing and facilitating the capabilities of the present invention. The article of manufacture can be included as a part of a computer system or sold separately.
Additionally, at least one program storage device readable by a machine, tangibly embodying at least one program of instructions executable by the machine to perform the capabilities of the present invention can be provided.
The flow diagrams depicted herein are just examples. There may be many variations to these diagrams or the steps (or operations) described therein without departing from the spirit of the invention. For instance, the steps may be performed in a differing order, or steps may be added, deleted or modified. All of these variations are considered a part of the claimed invention.
While the preferred embodiment to the invention has been described, it will be understood that those skilled in the art, both now and in the future, may make various improvements and enhancements which fall within the scope of the claims which follow. These claims should be construed to maintain the proper protection for the invention first described.