Visual Studio 2010에서 새로운 64 비트 Windows Winforms 응용 프로그램 디버깅? 처리되지 않은 예외가 디버거를 유발하지 않을 수 있습니다. 이는 WOW64 에뮬레이션 레이어로 인한 것인데, 이는 64 비트 윈도우 관리자 알림 (예 : 이벤트)에 응답하는 코드의 예외를 가로 채기 때문입니다.
근본 원인과 충격 Form1_Load
문제는 Windows가 32 비트 (앱)에서 64 비트 (알림 소스) 코드로 이동하는 예외를 올바르게 처리 할 수 없음에서 비롯됩니다. 예외는 디버거에게는 보이지 않기 때문에 디버깅을 어렵게 만듭니다.
솔루션
여기에 여러 가지 방법이 있습니다
대상 대상 ANDYCPU, 32 비트 기본 설정 비활성화 :
프로젝트 플랫폼 목표를 "AnyCPU"로 설정하고 "32 비트 선호"를 선택 해제하면 WOW64 문제를 우회하여 64 비트 프로세스를 강요합니다. 참고 : 2013 년 이전 VS 버전에서 "편집 및 계속"을 비활성화하고 32 비트 종속성에 문제가 발생할 수 있습니다.
CLR 예외 던지기 활성화 : 디버거의 "예외"창 (Debug & Gt; 예외)에서 CLR 예외는 "Thrown"상자를 확인하십시오. 이것은 예외의 원점에서 중단 점을 강요합니다
랩
: 이벤트 핸들러 코드를 블록으로 둘러싸십시오. 자세한 보고서와 함께 통제 된 충돌을 위해 블록에서 를 사용하십시오.
조정 :
메소드에서 메소드에서 호출하여 메시지 루프가 디버깅 중 예외를 억제하지 못하도록합니다.
재평가
이벤트 사용법 : - 이벤트 핸들러가 모든 코드가 필요한지 고려하십시오. 일부 조치를 생성자로 옮기면 도움이 될 수 있습니다
Windows 8 이상으로 업그레이드 : 새로운 Windows 버전은 WOW64 문제를 해결합니다.
이 솔루션은 근본적인 문제를 해결하지 못하지만이 시나리오에서 처리되지 않은 예외를 디버그하는 실질적인 방법을 제공합니다.