2012-04-17 2 views
0

우리는 MDBG를 사용하여 IIS 작업자 프로세스에 연결합니다.Mdbg : 프로세스에서 분리 할 수 ​​없습니다.

스택 스냅 샷을 수행 한 후 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(); 
     } 
    } 
} 

이 발생할 수 있습니다 왜 모든 아이디어는, 우리는 그것에 대해 무엇을 할 수 있습니까?

보다도, 마이크

답변

0

은 끊지 왜 모르겠어요,하지만 난 당신이 잠재적 경쟁 조건이 있다고 생각 - 프로세스가 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 
관련 문제