我们使用MDBG连接到IIS工作进程。
在执行堆栈快照之后,我们使用MDBgProcess.Detach()分离。
虽然这个调用通常需要10-80ms,但有时它会挂起很长一段时间,同时也会冻结进程。
这是不可接受的,因为该过程是一个生产程序。
下面是我们的完整代码:
try
{
proc.AsyncStop();
}
finally
{
// Make sure we are able to detach
try
{
// delete all breakpoints
proc.Breakpoints.DeleteAll();
}
catch (Exception e){}
finally
{
// detach and wait
var waitHandle = proc.Detach();
if (proc.CanExecute())
{
waitHandle.WaitOne();
}
}
}你知道为什么会发生这种情况吗?我们能做些什么?
最好的,迈克
发布于 2012-05-24 20:53:39
我不知道为什么它会挂起,但我认为您可能有一个竞争条件-在我的程序中,我阻塞,直到进程停止使用WaitOne()在Stop()...
proc.AsyncStop().WaitOne();
m_Debugger.Processes.Active.Breakpoints.DeleteAll();
proc.CorProcess.Detach(); // I don't wait here because this is where my prog endshttps://stackoverflow.com/questions/10194481
复制相似问题