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.