我们正在使用 MDBG 附加到 IIS 工作进程。
执行堆栈快照后,我们使用 MDBgProcess.Detach() 进行分离。
虽然这个调用通常需要 10-80 毫秒,但有时它会挂起很长时间,同时也会冻结进程。
这是不可接受的,因为该过程是一个生产程序。
这是我们的完整代码:
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();
}
}
}
任何想法为什么会发生这种情况,以及我们能做些什么?
最好的,迈克