2011-10-21 3 views
6

나는 .NET의 주장을 작성하는 비주얼 스튜디오 2010을 사용하고 있습니다 트리거 조회수를 확인한 다음 프로그램을 계속 실행하면 모든 것이 잘 작동합니다. "어설 션 실패"대화 상자가 나타납니다. 그러나 중단 점을 제거하고 응용 프로그램을 다시 실행하면 Debug.Assert() 문이 무시됩니다.Debug.Assert는()는

누구나 아주 이상한 행동을 일으킬 수있는 아이디어가 있습니까?

+2

당신에게 100됩니다 당신은 디버그 버전을 실행하고 있습니까? 나는 이것이 잠재적으로 어리석은 질문이라는 것을 알고있다 - 그러나 나는 이것을 여러 번 해왔다. – ChrisF

+0

"응용 프로그램을 다시 실행"할 때 디버거에서 실행 중이거나 그렇지 않은 경우? (F5 또는 Ctrl-F5?) 우연히 Express Edition을 사용하고 있습니까? –

+0

앱 다시 작성 시도 – xanatos

답변

3

제 동료는 문제가 무엇인지 즉시 알았습니다. "Visual Studio 2010/메뉴/옵션/디버깅/일반"에서 "내 코드 만 사용"플래그를 활성화해야했습니다. 분명히 이것은 bug in Visual Studio 2010"입니다.

2

동일한 문제가 발생했습니다. Trace.Assert을 사용하면 예상대로 작동합니다.


글쎄, Trace.Assert 다음 디버깅 세션에서 동일한 동작을 전시하기 시작했다.


아, 문제가 발견되었습니다. '사용 내 코드 만 "확인.

  • 경우' ' 에서'공용 언어 런타임 예외 '에 대한 체크'슬로우 예외 '대화 (Ctrl + Alt + E)와

    • , 어설 션이 슬로우됩니다.

    • 선택하지 않은 경우, 어설가 슬로우됩니다.

  • '내 코드 만 사용함'을 선택하지 않았습니다.

    • 'Thrown'을 선택하면 Assert가 throw되지 않습니다.

    • 'Thrown'을 선택하지 않으면 Assert가 발생합니다.

따라서 어설는 '내 코드 만 사용'할 때 선택되어 발생되지 않고 '공용 언어 런타임 예외'에 대한 체크 '슬로우'.

+1

VS 2013에서와 동일한 문제가 발생했지만 "내 코드 만 사용함"을 선택한 경우에도 마찬가지입니다. –

+0

예외 대화 상자에서 "던져진"것을 어디에서 찾을 수 있습니까? 나는 거기 엔 그런 입구가없는 걸까? 선택을 해제해야하는 예외의 전체 이름은 무엇입니까? –

0

대답은 도움이되지 않았다 여기에 주어진하지만 난 그게 프로젝트의 빌드 설정에서 디버그 구성에 대한 "DEBUG 상수를 정의"옵션을 체크하는 것만 큼 간단 것을 발견 :

The Define DEBUG constant option in project's build settings