System and method for conditional tracing of computer programs

Share
Save

Share On Facebook Share On Twitter Share By Email
Save Item
Add to
my lists

Filing Information

  • Patent Number: US7058928
  • Application Number: US10057002
  • Filing date: 01/24/2002
  • Issue date: 06/06/2006
  • Prior Publication Data:
  • Predicted expiration date: 10/07/2022
  • Patent term adjustment: 650
Explore Your Innovation Network™ for an introduction to:

Innovation Network Your First Name:
Last Name:
 
Already a member? Sign In
  • 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.
32 Claims, 22 Drawings


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

Document NumberAssigneesInventorsIssue/Pub Date
US4503495 Honeywell Information Systems Inc. Boudreau Mar 1985
US4511960 Honeywell Information Systems Inc. Boudreau Apr 1985
US4598364 International Business Machines Corporation Gum et al. Jul 1986
US4782461 Step Engineering Mick et al. Nov 1988
US5121489 International Business Machines Corporation Andrews Jun 1992
US5193180 Pure Software Inc. Hastings Mar 1993
US5265254* Hewlett-Packard Company Blasciak et al. Nov 1993
US5297274 International Business Machines Corporation Jackson Mar 1994
US5335344 Pure Software Inc. Hastings Aug 1994
US5347649 International Business Machines Corp. Alderson Sep 1994
US5386522 International Business Machines, Corp. Evans Jan 1995
US5386565 Ltd. Hitachi Tanaka et al. Jan 1995
US5394544 Ricoh Co., Ltd. Motoyama et al. Feb 1995
US5408650 Digital Equipment Corporation Arsenault Apr 1995
US5410685 Regents of the University of Michigan Banda et al. Apr 1995
US5421009* Hewlett-Packard Company Platt May 1995
US5446876* International Business Machines Corporation Levine et al. Aug 1995
US5450586 Hewlett-Packard Company Kuzara et al. Sep 1995
US5465258 Integrity Systems, Inc. Adams Nov 1995
US5481740 National Instruments Corporation Kodosky Jan 1996
US5483468* International Business Machines Corporation Chen et al. Jan 1996
US5513317* International Business Machines Corporation Borchardt et al. Apr 1996
US5526485 Microsoft Corporation Brodsky Jun 1996
US5533192 Apple Computer, Inc. Hawley et al. Jul 1996
US5551037 Lucent Technologies Inc. Fowler et al. Aug 1996
US5581697 Sun Microsystems, Inc. Gramlich et al. Dec 1996
US5590354 U.S. Philips Corporation Klapproth et al. Dec 1996
US5612898 Intel Corporation Huckins Mar 1997
US5615331 Phoenix Technologies Ltd. Toorians et al. Mar 1997
US5632032 International Business Machines Corporation Ault et al. May 1997
US5642478 International Business Machines Corporation Chen et al. Jun 1997
US5657438 Mercury Interactive (Israel) Ltd. Wygodny et al. Aug 1997
US5732210* Hewlett-Packard Company Buzbee Mar 1998
US5740355 Fujitsu Ltd. Watanabe et al. Apr 1998
US5771385 Sun Microsystems, Inc. Harper Jun 1998
US5848274* Supercede, Inc. Hamby et al. Dec 1998
US5870606* International Business Machines Corp. Lindsey Feb 1999
US5903718 International Business Machines Corporation Marik May 1999
US5928369 Synopsys, Inc. Keyser et al. Jul 1999
US5938778 International Business Machines Corporation John, Jr. et al. Aug 1999
US5940618 International Business Machines Corporation Blandy et al. Aug 1999
US5983366 Optimay Corporation King Nov 1999
US6003143 Compaq Computer Corporation Kim et al. Dec 1999
US6202199 Mutek Solutions, Ltd. Wygodny et al. Mar 2001
US6263456* International Business Machines Corporation Boxall et al. Jul 2001
US6282701 Mutek Solutions, Ltd. Wygodny et al. Aug 2001
US6321375* International Business Machines Corporation Blandy Nov 2001
US6374369* Philips Electronics North America Corporation O'Donnell Apr 2002
US6467052* Microsoft Corporation Kaler et al. Oct 2002

Foreign Patent Documents

Document NumberAssigneesInventorsIssue/Pub Date
WO199605556INTRINSA CORPFeb 1996
* cited by examiner

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.

Patent Family

Document NumberAssigneeInventorsIssue/Pub Date
US20030088854Valery Golender et al.May 2003
US7058928Identify Software Ltd.Shlomo Wygodny et al.Jun 2006

Read Patent

Read patent

Independent Claims | See all claims (32)

  1. 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.
  2. 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.
  3. 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.
  4. 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.