2010-03-19 6 views
9

사용자가 System.Diagnostics.Debugger.Break() 메서드를 사용하여 사용자가 명령 줄에서 중단 점을 설정할 수 있도록하는 프로그램을 만들고 있습니다. 이것은 여러 주 동안 잘 작동했습니다. 그러나 오늘 단위 테스트를 수정하려고 할 때 명령 줄에서 디버그 스위치를 사용하려고 시도했지만 작동하지 않았습니다. System.Diagnostics.Debugger.Debug() 작업이 중지되었습니다.

  • 나 '(그 후)을 System.Console.WriteLine를 (넣어) 내가 디버그() 메소드가 실제로 호출되고 있음을 확인했습니다

    • : 여기

      내가 무엇을 시도했다입니다 빌드 디버그 여전히 있음을 확인했습니다
    • 가 나는 제품 스튜디오를

    빠른 Google 검색 didn를 다시 시작했습니다 정리 빌드

  • 을했습니다 무엇이든 드러내지 않으며 .Net 용 API 문서에는 올바르게 수행되지 않는이 함수에 대한 언급이 없습니다. 그래서 ... 어떤 아이디어?

  • 답변

    17

    나는 무엇이 일어나고 있는지를 마침내 알게되었습니다. 왠지 내 컴퓨터에서 뭔가가 바뀌어서 Debugger.Debug를 호출하는 것이 더 이상 충분하지 못했습니다 (여전히 변경된 내용을 이해하지 못함). 내가 debugger.launch() 방법을 사용했다

    if (Debugger.IsAttached == false) Debugger.Launch(); 
    
    +0

    Visual Studio 2008에서 Visual Studio 2010으로 이주하는 것과 동일한 문제가 발생했습니다.'Debugger.Break()'는 VS2008에서 정상적으로 작동했으며, VS2010에서는'Debugger.Launch()'를 사용하고 있습니다. –

    +0

    VS2015에서 동일 함 - Debugger.Break()가 작동하지 않음 - Debugger.Launch()가 작동 함 – chenop

    0

    VS 2008 SP1을 사용하고 있습니까? 그 릴리스에서 디버깅을 할 때 많은 문제가 있었는데이 모든 것이이 Microsoft patch에 의해 해결되었습니다. 루프 또는 재귀 함수에 넣어

    중단 점은 각 반복에서 모든 과정에 명중되지 않습니다. 프로세스가 중지되기 전에 일부 프로세스는 루프의 많은 반복을 통해 을 전달할 수 있습니다. 은 중단 점을 무시합니다.

    중단 점 공격,하지만 당신은 비주얼 스튜디오 디버거에서 여러 프로세스를 디버깅 할 때 보이지 않습니다 되어있다.

    다른 디버거 관련 문제도 수정되었습니다.

    +0

    죄송합니다 ... 패치를 설치 한 후에도 여전히 문제가 발생합니다. :-( –

    2

    그것은 갑자기 작동이 중지 : 어떤 경우에, 지금 디버거 사용에 의해 제공 될 수 있습니다.

    if (Debugger.IsAttached == false) Debugger.Launch(); 
    

    도 디버거를 불러 오지 않았습니다. Visual Studio 설정을 재설정하려고 시도했는데 효과가있었습니다! 여기에서 추출

    0

    (MSDN) 다음 참고 :

    가 net_v40_long을 시작으로, 런타임은 더 이상 M에 대한 디버거 실행의 엄격한 제어 행사하지 : System.Diagnostics.Debugger.Break 방법을 대신 WER (Windows 오류보고) 하위 시스템에 오류를보고합니다. WER는 문제보고 경험을 사용자 정의하는 많은 설정을 제공하므로 운영 체제 버전, 프로세스, 세션, 사용자, 시스템 및 도메인과 같은 오류에 WER가 응답하는 방식에는 많은 요소가 영향을줍니다. M : System.Diagnostics.Debugger.Break 메서드를 호출 할 때 예기치 않은 결과가 발생하면 컴퓨터의 WER 설정을 확인하십시오.WER를 사용자 지정하는 방법에 대한 자세한 내용은 WER Settingshttps : //msdn.microsoft.com/library/windows/desktop/bb513638.aspx를 참조하십시오. WER 설정에 관계없이 디버거를 시작하려면 M : System.Diagnostics.Debugger.Launch 메서드를 호출해야합니다.

    내가 발견 한 동작을 설명한다고 생각합니다.

    관련 문제