A method of tracing the execution of a plurality of instructions within a processor system which includes a processor, a main memory, a processor clock and a cache memory, which are interconnected via a bus, said method comprising the steps of:
- executing a series of instructions;
- initiating an instruction trace;
- in response to said initiation of said instruction trace, determining an initial state of said cache memory and monitoring subsequent instruction addresses, data addresses and data on said bus;
- during each processor clock cycle, detecting an exact number of instructions executed, an indication of whether each branch instruction is taken or not taken, and providing an output in response to each such detection;
- and
- thereafter, reconstructing an instruction trace utilizing said monitor to instruction addresses, data addresses and data, said initial state of said cache memory and said outputs.