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.