1. A method of debugging the execution of instructions stored on shared memory by a first processor and a second processor, the method comprising: loading a first instruction address range associated with a first processor; loading a second instruction address range associated with a second processor; raising an emulation event if a current instruction address is outside a loaded address range.