The debugger consists of two parts: A main debugger image
(DEBUGSHR.EXE) that contains most of the debugger code and
a smaller kernel debugger image (DEBUG.EXE). This separation
reduces potential interference between the debugger and the
program being debugged and also makes it possible to have a
multiprocess debugging session.
When you start the debugger, a process is created to run the main
debugger.
In a multiprocess debugging session, each program being debugged
runs in a separate process. Each process that is running one or
more images under debugger control is also running a local copy
of the kernel debugger. The main debugger, running in its own
process, communicates with the other processes through their
kernel debuggers.
Although all processes of a multiprocess session must be in
the same job, they do not have to be related in a particular
process/subprocess hierarchy. Moreover, the program images
running in separate processes do not have to communicate with
each other.