0

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();
        }
    }
}

なぜこれが起こるのか、それに対して私たちができることはありますか?

ベスト、マイク

4

1 に答える 1

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
于 2012-05-24T12:53:38.677 に答える