Existing kernel-level debugging primitives are inappropriate for instrumenting complex sequential or parallel programs. These functions incur a heavy overhead in their use of system calls and process switches. Context switches are used to alternately invoke the debugger and the target programs. System calls are used to communicate data between the target and debugger.
None of this is necessary in shared-memory multiprocessors. Multiple processors concurrently run both the debugger and the… CONTINUE READING