A diagnostic tracing logger is presented for use in a multithread
environment in which diagnostic trace log entries are captured and
recorded. The trace logs are composed of sequences of memory addresses
used to access instructions and operands, instruction op-codes and
register specifiers, sequences of memory addresses, branch instructions
or exceptions, the contents of registers or semiconductor memory
locations, and the like. In one embodiment, a software module configures
a plurality of buffers to capture bus traces, each trace triggered by a
specific pattern. A buffer controller manages transfer of diagnostic
trace information from the plurality of buffers to a diagnostic log
without using processor memory cycles. The trace information is
transferred to a selected buffer using a processor cache flush
instruction. Diagnostic trace logging facilitates diagnosis of complex
system and software interactions without the cost and overhead of prior
art trace logging techniques.