System and method for remotely analyzing the execution of computer programs
First Claim
1. 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 build information that relates the source code representation to the executable 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 build information to generate said trace control information, said build information generated during building of an executable representation of said client from a source code representation of said client;
a second code module that attaches to a memory image of said executable representation of said client program based on said trace control information, said second code module configured to monitor execution of said client program and to generate, based on said selections by said developer, 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 build information, and displays translated trace information on said display screen to allow said developer to analyze the execution of said client program;
wherein said second code module is adapted to be executed separately from said first and third code modules, the system thereby enabling a developer to remotely control and evaluate the tracing of said client program.
6 Assignments
0 Petitions
Accused Products
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. 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.
420 Citations
33 Claims
-
1. 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 build information that relates the source code representation to the executable 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 build information to generate said trace control information, said build information generated during building of an executable representation of said client from a source code representation of said client;
a second code module that attaches to a memory image of said executable representation of said client program based on said trace control information, said second code module configured to monitor execution of said client program and to generate, based on said selections by said developer, 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 build information, and displays translated trace information on said display screen to allow said developer to analyze the execution of said client program;
wherein said second code module is adapted to be executed separately from said first and third code modules, the system thereby enabling a developer to remotely control and evaluate the tracing of said client program.
-
-
2. 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;
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;
transmitting said trace log from said client site to the developer site; and
at the developer site, using the trace log to debug the client program.
-
-
3. 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 progam to be traced, and to generate trace control information which indicates said source code elements;
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;
transmitting said trace log from said client site to the developer site; and
at the developer site, using the trace log to debug the client program, wherein the first code module generates trace control information that is in a non-human readable form and the second code module generates a trace log that is in a non-human-readable form, so that the method is performed without exposing the client site to source code elements of the client program.
-
-
4. 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;
transmitting said trace control information to the client site;
at the client site executing the client progam 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;
transmitting said trace log from said client site to the developer site; and
at the developer site, using the trace log to debug the client program, by using a third code module which translates the trace log to a human readable form using build information.
-
-
5. A software execution tracing system for tracing execution of a client program without requiring modifications to the executable and source code files of the client program, the 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 program, said first code module configured to monitor execution of said client program using debug-build information generated by a compiler and to generate trace information that reflects said execution; and
a second code module that translates said trace information into a human-readable form, and displays translated trace information on a display screen to allow said developer to analyze the execution of said client program. - View Dependent Claims (6, 7, 8, 9, 10)
-
-
11. A software execution tracing system for tracing execution of a client program without requiring modifications to the executable and source code files of the client program the 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 program, said first code module configured to monitor execution of said client progam and to generate trace information that reflects said execution; and
a second code module that translates said trace information into a human-readable forms and displays translated trace information on a display screen to allow said developer to analyze the execution of said client program, wherein said first code module is adapted to be sent to a remote user site together with trace control information, and where said first code module is adapted to be used at said remote user site as a stand-alone tracing component that enables a remote customer who does not necessarily have access to said source code representation or said second code module, to generate a trace file that represents execution of said client application at said remote site. - View Dependent Claims (12)
-
-
13. A software execution tracing system for tracing execution of a client program without requiring modifications to the executable and source code files of the client program the 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 program, said first code module configured to monitor execution of said client program and to generate trace information that reflects said execution; and
a second code module that translates said trace information into a human-readable form, and displays translated trace information on a display screen to allow said developer to analyze the execution of said client program, wherein said second code module provides an offline analysis mode which provides functionality for interactively analyzing said trace information after the monitoring of said client application has completed.
-
-
14. A software execution tracing system for tracing execution of a client program without requiring modifications to the executable and source code files of the client program, the 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 program, said first code module configured to monitor execution of said client program and to generate trace information that reflects said execution; and
a second code module that translates said trace information into a human-readable form, and displays translated trace information on a display screen to allow said developer to analyze the execution of said client program, wherein said second code module translates said trace information into a human-readable form based on at least build information, where said build information links said source code representation to said executable code representation. - View Dependent Claims (15, 16)
-
-
17. A software execution tracing system for tracing execution of a client program without requiring modifications to the executable and source code files of the client program, the client progam 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 program, said first code module configured to monitor execution of said client program according to trace control information stored in a trace control file and to generate trace information that reflects said execution, wherein said trace control file is moved to a remote computer and used with said first code module and said client program on said remote computer; and
a second code module that translates said trace information into a human-readable form, and displays translated trace information on a display screen to allow said developer to analyze the execution of said client program. - View Dependent Claims (18)
-
-
19. A software execution tracing system for tracing execution of a client program without requiring modifications to the executable and source code files of the client program, the 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 program, said first code module configured to monitor execution of said client program and to generate trace information that reflects said execution; and
a second code module that translates said trace information into a human-readable form, and displays translated trace information on a display screen to allow said developer to analyze the execution of said client program, wherein said client program is traced from its starting point.
-
-
20. A software execution tracing system for tracing execution of a client program without requiring modifications to the executable and source code files of the client program, the 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 program, said first code module configured to monitor execution of said client program and to generate trace information that reflects said execution;
a second code module that translates said trace information into a human-readable form, and displays translated trace information on a display screen to allow said developer to analyze the execution of said client program; and
a third 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, said third code generating trace control information which is used by said first code module to monitor and trace said execution of said client program. - View Dependent Claims (21)
-
-
22. A method for simultaneously tracing the execution path of one or more client programs without requiring modification either source code or object code of said client programs, said method comprising the steps of:
-
instrumenting an 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;
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 Dependent Claims (23, 24, 25)
-
-
26. A method for simultaneously tracing the execution path of one or more client programs without requiring modification either source code or object code of said client programs, said method comprising the steps of:
-
instrumenting an 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;
transferring said encoded trace log to computer memory accessible by a trace analysis tool;
analyzing said trace data using said executable analysis tool by decoding and displaying said trace data; and
creating trace control information, said trace control information comprising commands used by said trace library module when collecting said trace data, wherein said trace control information comprises function addresses.
-
-
27. A method for simultaneously tracing the execution path of one or more client programs without requiring modification either source code or object code of said client programs, said method comprising the steps of:
-
instrumenting an 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;
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, wherein said library module is configured to run in a same context as said client.
-
-
28. A method for simultaneously tracing the execution path of one or more client programs without requiring modification either source code or object code of said client programs, said method comprising the steps of:
-
instrumenting an 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;
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 including translating said trace data into a human-readable form.
-
-
29. A method for simultaneously tracing the execution path of one or more client programs without requiring modification either source code or object code of said client programs, said method comprising the steps of:
-
instrumenting an 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;
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, and translating said trace data into human-readable data based on at least build information and displaying said human-readable data on a display, where said build information links a source code representation to addresses in said trace control dataset. - View Dependent Claims (30, 31, 32, 33)
-
Specification