> 백엔드 개발 > C++ > 64 비트 Windows의 Visual Studio 2010 Winforms Apps에서 처리되지 않은 예외가 사라지는 이유는 무엇입니까?

64 비트 Windows의 Visual Studio 2010 Winforms Apps에서 처리되지 않은 예외가 사라지는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2025-02-01 22:21:12
원래의
266명이 탐색했습니다.

Why Unhandled Exceptions Vanish in VS2010 WinForms Apps (64-bit Windows) Visual Studio 2010 : 64 비트 Windows Winforms Exception Handling enigma

visual studio 2010에서 호기심 많은 문제가 발생합니다. 64 비트 창에서 실행되는 Winforms 응용 프로그램에서 도대치되지 않은 예외는 종종 조용히 사라집니다. 응용 프로그램은 예상 오류 메시지 또는 디버거 브레이크없이 계속 실행됩니다.

근본 원인 이해

이 동작은 64 비트 시스템에서 32 비트 코드를 에뮬레이션하는 Windows의 "WOW64"레이어와 연결되어 있습니다. 64 비트 윈도우 관리자가 이벤트를 트리거 할 때 (이벤트와 같은) WOW64는 32 비트 프로세스 코드를 가로 채립니다. 이 차단 된 코드 내에서 처리되지 않은 예외는 마스킹되어 디버거가 그들을 잡지 못하게합니다.

솔루션 및 해결 방법

몇 가지 전략 이이 문제를 해결할 수 있습니다

대상 플랫폼 조정 : 프로젝트의 "플랫폼 대상"을 "AnyCPU"(프로젝트 속성 & gt; 빌드)로 변경합니다. 이로 인해 응용 프로그램은 WOW64를 우회하여 64 비트 프로세스로 만듭니다. 참고 : 이로 인해 32 비트 종속성과의 호환성 문제가 발생할 수 있습니다

디버거 예외 설정 : Load 디버그 & gt; 예외, CLR 예외는 "Thrown"상자를 확인하십시오. 이것은 예외가 발생할 때 디버거가 일시 중지되도록합니다

로드 이벤트 예외 처리 : 이벤트 핸들러 내에서 코드를 블록으로 감습니다. 블록에서 예외가 눈에 띄도록 응용 프로그램을 종료하십시오.

글로벌 예외 처리 :

메소드에서 를 사용하십시오. 이로 인해 디버그 모드에서 도대치되지 않은 예외가 발생하지만
    이벤트의 효과를 줄일 수 있습니다.
  1. 이벤트 핸들러 검토 : 이벤트에 있어야하는

    가 필요한지 고려하십시오. 이 이벤트는 항상 필수적 인 것은 아니며, 불필요하게, 특히 vb.net에서 더 나은 이벤트 핸들러 선택을 모호하게 할 수 있습니다.
  2. .
  3. 운영 체제 업그레이드 : Windows 8 이상으로 업그레이드하는 경우가 종종이 WOW64 관련 문제를 해결합니다.

    이러한 솔루션 중 하나를 구현하면 64 비트 Windows의 Visual Studio 2010 Winforms 응용 프로그램에서 효과적으로 디버깅하고 처리 할 수 ​​있습니다.

위 내용은 64 비트 Windows의 Visual Studio 2010 Winforms Apps에서 처리되지 않은 예외가 사라지는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿