The debugging of bifurcated processes allows a debugger to: (1) read
and/or write process memory for the debuggee process; (2) get and/or set
the thread context for the debuggee process threads; (3) control running
threads of the debuggee process; and (4) handle debug events. Bifurcated
processes include a shadow process whereby threads are scheduled and a
corresponding work process which handles the actual work to be done by
the process. The reading and writing of process memory and the getting
and setting of the context is done by passing the request to the
execution environment in which the work process is executing. The control
of threads of the debuggee process is handled by requesting that the
execution environment in which the shadow process is running perform the
request. Debug events are routed to the debugger from the execution
environment in which the work process is executing.