System and method for remotely analyzing the execution of computer programs
Patent 6202199 Issued on March 13, 2001. Estimated Expiration Date: July 30, 2018. Estimated Expiration Date is calculated based on simple USPTO term provisions. It does not account for terminal disclaimers, term adjustments, failure to pay maintenance fees, or other factors which might affect the term of a patent.
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. The developer then uses a trace analyzer program, also having a graphical user interface, to view the trace information. The system can trace multiple threads and multiple processes. The tracing library is preferably configured to runs in the same process memory space as the client thereby tracing the execution of the client program without the need for context switches. The tracing system provides a remote mode and an online mode. In remote mode, the developer sends the trace control information 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, run and trace the client, and display the trace results in near real-time on the display screen during execution of the client program.
Other References
Rosenberg, Jonathan B., How Debuggers Work: Algorithms, Data Structures, and Architecture, John Wiley & Sons, Inc., 1996
Geer, C. P. et al., IBM Technical Disclosure Bulletin: Instruction Stream Trace, vol. 26, No. 11, Apr. 1984, pp. 6217-6220
Hunt, T. A., IBM Technical Disclosure Bulletin: General Trace Facility, vol. 15, No. 8, Jan. 1973, pp. 2446-2448
Harward, Jr., L. D. IBM Technical Disclosure Bulletin: PL/1 Trace Program, vol. 13, No. 4, Sep. 1970, pp 855-857
Larus, James R., "Efficient Program Tracing," IEEE Software magazine, May 1993, pp. 52-61
Malony, Allen D. et al., "Traceview: A Trace Visualization Tool," IEEE Software magazine, Sep. 1991, pp. 19-28
Martonosi, Margaret et al., "Effectiveness of Trace Sampling for Performance Debugging Tools" article, 1993, pp. 248-259
Netzer, Robert H. B. et al., "Optimal Tracing and Incremental Reexecution for Debugging Long-Running Programs," ACM SIGPLAN '94 Conference on Programming Language Design and Implementation (PLDI), Jun. 20-24, 1994, Orlando Florida, pp. 313-325
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
Plattner, Bernhard et al., "Monitoring Program Execution: A Survey" article, IEEE Software magazine, Nov. 1981, pp. 76-93
Reiss, Steven P., "Trace-Based Debugging, " Automated and Algorithmic Debugging Workshop, May 3-5, 1993, Linkopking, Sweden, pp. 305-314
Schieber, Colleen D. et al., "RATCHET: Real-Time Address Trace Compression Hardware for Extended Traces," Performance Evaluation Review, vol. 21, #3 and 4, Apr. 1994, pp. 22-32
Soule, K., IBM Technical Disclosure Bulletin: Algorithm For Tracing Execution Paths to a Given Location in a Program, vol. 14, No. 4, Sep. 1971, pp. 1016-1019
Spinellis, Diomidis, "Trace: A Tool for Logging Operating System Call Transaction," Operating Systems Review publication, vol. 28, No. 4, Oct. 1994, pp. 56-63
Timmerman, M. et al., "High Level Tools for the Debugging of Real-Time Multiprocessor Systems," ACM/ONR Workshop on Parallel and Distributed Debugging, May17-18, 1993, San Diego, California, pp. 151-158
Tsai, Jeffrey J. P. et al., "A Noninvasive Architecture to Monitor Real-Time Distributed Systems," IEEE Software magazine, 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
Goldszmidt et al, "Interactive blackbox debugging for concurrent language", ACM pp 271-282, 1990
Appelbe et al., "Integrating tools for debugging and developing multitasking programs", ACM, pp. 78-88, 1993
Wismuller, "Debugging of globally optimized programs using data flow analysis", ACM SIGPLAN pp 278-289, Apr. 1994
Bates, "Debugging heterogeneous distributed system using event based models of behavior", ACM pp 11-22, 1992