2011-03-17 6 views
1

코드에서 구독 할 수있는 디버깅 중에 Visual Studio에서 발생시키는 이벤트가 있습니까? 특히, 나는 디버거가 분리되거나 멈출 때를 알고 싶다. 감사합니다디버깅중인 코드의 디버거 이벤트에 연결 하시겠습니까?

+0

아니요, 디버거는 항상 다른 프로세스에서 실행해야합니다. 폴링 만 할 수 있습니다. 중단 점 설정 및 변수 값 편집이 가능합니다. –

답변

2

별도의 스레드에서 Debugger.IsAttached 메서드를 확인하고 그에 따라 이벤트를 생성 할 수 있습니다.

편집 : 방금 작동했는지 확인했습니다.

public class DebuggerEvents { 

    public delegate void DebuggingStatusChanged(EventArgs e); 
    public event DebuggingStatusChanged DebuggerAttached; 
    public event DebuggingStatusChanged DebuggerUnattached; 

    private readonly Thread workerThread; 
    public DebuggerEvents() { 
     var threadStart = new ThreadStart(BackgoundWorker); 
     workerThread = new Thread(threadStart); 
     workerThread.Start(); 
    } 


    private void BackgoundWorker() { 
     bool currentStateflag = Debugger.IsAttached; 
     while (true) { 

      if (Debugger.IsAttached && !currentStateflag){ 
       DebuggerAttached(new EventArgs()); 
       currentStateflag = true; 
      } 

      if (!Debugger.IsAttached && currentStateflag){ 
       DebuggerUnattached(new EventArgs()); 
       currentStateflag = false; 
      } 

      Thread.Sleep(100); 
     } 

    } 
} 
+0

이 기술을 사용하여 중지 단추를 누르면 이벤트 처리기가 프로세스가 끝나기 전에 실행을 완료하도록 보장합니까? – adam0101

+0

아마도 그렇지 않습니다. tho를 테스트해야합니다 –

+0

아마도 나를 위해 작동하지 않습니다. 트랜잭션을 롤백하려고하는데 몇 초가 걸릴 수 있습니다. – adam0101

1

이 시도 :

System.Diagnostics.Debugger.IsAttached 

는 또한 조건부 컴파일 기호를 조회하고 DEBUG 기호에주의를 기울이십시오.

관련 문제