2013-10-05 1 views
0

내 프로그램에서 나는 AccessViolation & 등의 오류를 잡아내는 SEH 예외 처리기를 실제로 사용해야하지만, 처리기는 디버그 빌드에서만 작동합니다.__try 및 __except Release 빌드에서 작동하지 않습니다.

릴리스 빌드에서 동일한 옵션이 활성화되었지만 작동하지 않습니다.

언제든지 릴리스 모드에서 SEH를 활성화하는 방법은 무엇입니까?

감사합니다.

__try { /* crash code */ } 
__except(EXCEPTION_EXECUTE_HANDLER { MessageBox("Crash prevented"); } 

디버그 빌드 모드에서는 작동하지만 릴리스 (작동 중지)에서는 작동하지 않습니다.

+0

릴리스 빌드에서 SEH에 특별한 것은 없습니다. 아무도 "작동하지 않는다"는 것을 추측 할 수 없습니다. 잘못된 것을보고 설명하지 않고 스 니펫을 게시하지 않으면 의미 할 수 있습니다. –

+0

@ 한자 Passant Relax. 특별한 설명이 필요한 경우 : 디버그 모드의 내 프로그램은 SEH 예외 (핸들러 작동)를 처리합니다. 릴리스 모드에서는 no입니다. 기본 릴리즈/디버그 모드 차이점을 제외하고 구성은 대부분 동일합니다. – Loryan55

+0

좋아, LOL, "Offtopic"또는 "Not 건설적"으로 질문을 마감 할 때입니다! – Loryan55

답변

1

설정으로 재생 한 후에 더 해결책을 찾았습니다. 릴리스 구성에서 SEH 예외 처리기를 사용하려면 "코드 생성"페이지에서 "기본 런타임 검사"를 활성화해야했습니다.

"기본 런타임 검사"옵션은 최적화가 활성화 된 상태에서는 사용할 수 없습니다.

+0

안녕하세요 Loryan, Windows 10 x64에서 충돌이 발생합니다. 그러나 Windows 7 x64에서는 그렇지 않습니다. –