Question

Following on from this question I now have code that can attach to a process using the Mdbg API.

The problem is that I can't detach from the process if I need to. When I call mgProcess.Detach().WaitOne(); ( where mgProcess is a MDbgProcess created from an MDbgEngine object ) I get the following error message:

 Process not synchronized. (Exception from HRESULT: 0x80131302)
     at Microsoft.Samples.Debugging.CorDebug.NativeApi.ICorDebugController.Detach()
     at Microsoft.Samples.Debugging.CorDebug.CorController.Detach() in C:\mdbg\src\debugger\corapi\Controller.cs:line 89
     at Microsoft.Samples.Debugging.MdbgEngine.MDbgProcess.Detach() in C:\mdbg\src\debugger\mdbgeng\Process.cs:line 716

If I just try to call mgProcess.Detach() or mgProcess.CorProcess.Detach() I get the same result.

Does anyone know the correct way to detach an Mdbg process?

Was it helpful?

Solution

It transpires that Mdbg will not allow you to do anything while the debugee is running.

  MgProcess.CorProcess.Stop(0);
  MgProcess.Detach();

Appears to be the way forward.

OTHER TIPS

Try this:

proc.AsyncStop();
proc.Detach();

or

Proc.CorProcess.Stop(0);  
Proc.Detach();
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top