System and method for conditional tracing of computer programs
Filing Information
- Patent Number: US7058928
- Application Number: US10057002
- Filing date: 01/24/2002
- Issue date: 06/06/2006
- Prior Publication Data:
- US20030088854 - 05/08/2003
- Predicted expiration date: 10/07/2022
- Patent term adjustment: 650
- U.S. Classifications: 717/128 · 717/177 · 717/127 · 717/124 ·
- International Classifications: G06F944 ·
- Related U.S. Application Data:
REFERENCE TO RELATED APPLICATION
The present application is a continuation-in-part of application Ser. No. 09/923,972, filed Aug. 7, 2001 now abandoned, titled “SYSTEM AND METHOD FOR CONDITIONAL TRACING OF COMPUTER PROGRAMS,” which is a continuation of application Ser. No. 09/748,752, filed Dec. 26, 2000 now abandoned, titled “SYSTEM AND METHOD FOR CONDITIONAL TRACING OF COMPUTER PROGRAMS,” which claims the benefit of Provisional Application No. 60/172,101, filed Dec. 23, 1999, the disclosures of which are incorporated herein by reference in their entirety.
Abstract
A software system is disclosed which facilitates the process of tracing the execution paths of a program, called the client. The tracing is performed without requiring modifications to the executable or source code files of the client. Trace data collected during the tracing operation is collected according to instructions in a trace options file. At run time, the tracing library attaches to the memory image of the client. The tracing library is configured to monitor execution of the client and to collect trace data, based on selections in the trace options file. Conditional tracing, through the use of triggers and actions taken in response to the triggers, allows the developer to control the tracing operation. The triggers can be conditional triggers in which the corresponding action is taken only if a conditional expression is satisfied. The system can trace multiple threads and multiple processes. The tracing system provides a remote mode and an online mode. In remote mode, the developer sends the trace control information (which can include triggers and corresponding actions) to a remote user site together with a small executable image called the agent that enables a remote customer, to generate a trace file that represents execution of the client application at the remote site. In online mode, the developer can generate trace options (including triggers and corresponding actions), run and trace the client, and display the trace results in near real-time on the display screen during execution of the client program.References Cited
U.S. Patent Documents
Foreign Patent Documents
| Document Number | Assignees | Inventors | Issue/Pub Date |
|---|---|---|---|
| WO199605556 | INTRINSA CORP | Feb 1996 |
Other Publications
| Bates, Peter C., “Debugging Heterogeneous Distributed Systems Using Event-Based Models of Behavior,” ACM Transactions on Computer Systems, vol. 13; No. 1, Feb. 1995, pp. 1-31. |
| Bruegge, Bernd, et al., “A Framework for Dynamic Program Analyzers,” OOPSLA, 1993, pp. 62-85. |
| Geer, C.P., et al., “Instruction Stream Trace,” IBM Technical Disclosure Bulletin, vol. 26, No. 11, Apr. 1984, pp. 6217-6220. |
| Haward, L.D. Jr., “PL/1 Trace Program,” IBM Technical Disclosure Bulletin, vol. 13, No. 4, Sep. 1970, pp. 855-857. |
| Hunt, T.A., “General Trace Facility,” IBM Technical Disclosure Bulletin, vol. 15, No. 8, Jan. 1973, 2446-2448. |
| Larus, James R., “Efficient Program Tracing,” IEEE, May 1993, pp. 52-61. |
| Malongy, Allen D., et al., “Traceview: A Trace Visualization Tool,” IEEE, Sep. 1991, pp. 19-28. |
| Martonosi, Margaret, et al., “Effectiveness of Trace Sampling for Performance Debugging Tools,” ACM SIGMETRICS. 1993, 248-259. |
| Meier, Michael S., et al., “Experiences with Building Distributed Debuggers,” SPDT, 1996, 70-79. |
| Mukherjea, Sougata, et al., “Applying Algorithm Animation Techniques for Program Tracing, Debugging, and Understanding,” IEEE, 1993, pp. 456-465. |
| Netzer, Robert H.B., “Optimal Tracing and Replay for Debugging Shared-Memory Parallel Programs,” ACM/ONR Workshop on Parallel and Distributed Debugging, May 17-18, 1993, San Diego, California, pp. 1-12. |
| Netzer, Robert H.B., et al., “Optimal Tracing and Replay for Debugging Message-Passing Parallel Programs,” IEEE, 1992, pp. 502-511. |
| Netzer, H.B., et al., “Optimal Tracing and Incremental Reexecution for Debugging Long-Running Programs,” ACM SIGPLAN 1994 Conference on Programming Language Design and Implementation, Jun. 20-24, Orlando, Florida, pp. 313-325. |
| Plattner, Bernhard, et al., “Monitoring Program Execution:- A Survey,” IEEE, Nov. 1981. pp. 76-93. |
| Reiss, Steven P., “Trace-Based Debugging,” Automated and Algorithmic Debugging Workshop, May 3-5, 1993. |
| Rosenberg, Jonathan, B., How Debuggers Work: Algorithms, Data Structures, and Architecture., John Wiley & Sons, Inc., 1996. |
| Schieber, Colleen, et al., “RATCHET: Real-time Address Trace Compression Hardware for Extended Traces,” Performance Evaluation Review, vol. 21, Nos. 3 and 4, Apr. 1994, pp. 22-32. |
| Spinellis, Diomidis, “Trace: A Tool for Logging Operating System Review Transactions,”Operating Systems Review Publication, vol. 28, No. 4, Oct. 1994, pp. 56-63. |
| Soule, K., “Algorithm for Tracing Execution Paths to a Given Location in a Program,” IBM Technical Disclosure Bulletin, vol. 14, No. 4, Sep. 1971, pp. 1016-1019. |
| Timmerman, F. Gielen, et al., “High Level Tools for the Debugging of Real-Time Multiprocessor Systems,” ACM/ONR Workshop on Parallel and Distributed Debugging, May 17-18, 1993, San Diego, California, pp. 151-158. |
| Tsai, Jeffrey, J.P., et al., “A Noninvasive Architecture to Monitor Real-Time Distributed Systems,” IEEE, Mar. 1990, pp. 11-23. |
| Wilner, David, “WindView: A Tool for Understanding Real-time Embedded Software Through System Vizualization,” ACM SIGPLAN Notices, vol. 30, No. 11, Nov. 1995, pp. 117-123. |
Referenced By
Patent Family
| Document Number | Assignee | Inventors | Issue/Pub Date |
|---|---|---|---|
| US20030088854 | Valery Golender et al. | May 2003 | |
| US7058928 | Identify Software Ltd. | Shlomo Wygodny et al. | Jun 2006 |
Independent Claims | See all claims (32)
- 1. A method of remotely debugging a client program which runs at a client site which is located remotely from a developer site, the method comprising: using a first code module at the developer site to select a plurality of source code elements of the client program to be traced, and to generate trace control information which indicates said source code elements, wherein said trace control information includes one or more pairs of triggers and actions, said one or more pairs of triggers and actions each specifying an event and an action to take in response to said event; transmitting said trace control information to the client site; at the client site, executing the client program together with a second code module which traces the execution of said client program based on said trace control information, to thereby generate a trace log which reflects execution of the client program.
- 3. A software system that facilitates the process of identifying and isolating bugs within a client program without requiring modifications to the executable and source code files of the client program, the client program including at least a source code representation, an executable code representation, and debug information that links the source code representation to the executable code representation, the debug information generated by a compiler program during compilation of the client source code representation, the software system comprising: a first code module that displays source code elements of said client on a display screen together with controls that enable a software developer to interactively specify one or more elements to be traced, the first code module configured to generate trace control information based on selections by said developer of said source code elements to be traced, said first code module using at least said debug information to generate said trace control information, said trace control information comprising conditional tracing data expressed as triggers and actions related to said triggers; a second code module that attaches to a memory image of said object code representation of said client program based on said trace control information, said second code module configured to monitor execution of said client program on a computer and to generate, based at least in part on said triggers and said actions, trace information that reflects said execution, said second code module configured to run in a same context as said client program; and a third code module that translates said trace information into a human-readable form based on at least said debug information, and displays translated trace information on said display screen to allow said developer to analyze the execution of said client program.
- 4. A software execution tracing system for tracing a client program having at least a source code representation and an executable code representation, said software system comprising: a first code module that attaches to a memory image of said client programloaded into a compute memory, said first code module configured to monitor execution of said client program and to generate trace information that reflects said execution, said trace information generated at least in part by specified actions in response to specified triggers; and a second code module that translates said trace information into a human-readable form, and displays translated trace information on said display screen to allow said developer to analyze the execution of said client program.
- 21. A method for simultaneously tracing the execution path of one or more client programs, said method comprising the steps of: loading a client program into a computer memory to create an in-memory image of said client program; instrumenting said in-memory image of said client program by attaching a trace library module to said client program; collecting trace data relating to the execution of said client program and transferring said trace data to a trace log, wherein collecting trace data comprises taking actions in response to triggers; transferring said encoded trace log to computer memory accessible by a trace analysis tool; and analyzing said trace data using said executable analysis tool by decoding and displaying said trace data.





View assignee updates
analyzing 100 million+ documents to uncover your network...