我们正在使用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();
}
}
}
为什么会出现这种情况的任何想法,以及我们可以采取的措施?
最佳, 麦克
答案 0 :(得分:0)
我不知道它为什么会挂机,但我认为你可能有竞争条件 - 在我的程序中,我阻止直到使用Stop()上的WaitOne()停止进程...
proc.AsyncStop().WaitOne();
m_Debugger.Processes.Active.Breakpoints.DeleteAll();
proc.CorProcess.Detach(); // I don't wait here because this is where my prog ends