>백엔드 개발 >C++ >VS2010을 사용하여 64 비트 Windows Winforms 응용 프로그램에서 예외 메시지가 누락 된 이유는 무엇입니까?

VS2010을 사용하여 64 비트 Windows Winforms 응용 프로그램에서 예외 메시지가 누락 된 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-02-01 22:06:11188검색

vs2010 64 -winforms 응용 프로그램의 비트 윈도우 응용 프로그램 누락 정전 : 문제 분석 및 해결책 Why are Exception Messages Missing in 64-bit Windows WinForms Applications using VS2010?
Visual Studio 2010을 사용하여 64 비트 Wind 로드 이벤트 처리 프로그램의 코드에서 코드가 처리되지 않으면 프로그램은 문제 코드 라인을 건너 뛰고 오류없이 계속 실행됩니다. 이는 예상 디버거 중단의 동작 및 비되지 않은 정보의 비정상적인 표시와 다릅니다.

근본 원인 분석

이 비정상적인 동작은 WOW64 (Windows-on-Windows 64 비트) 시뮬레이션 레이어에서 비롯된 64 비트 시스템에서 실행되는 32 비트 코드와 상호 작용했습니다. 64 비트 윈도우 관리자가 알림을 트리거하면 32 비트 환경에서 응답 코드 (예 :로드 이벤트 처리 프로그램)가 실행됩니다. 이 32 비트 코드에서 이상이 발생하면 WOW64 층은 이상을 삼키고 디버거가 감지되는 것을 방지 할 수 있습니다. 솔루션 및 변경 방법

플랫폼 대상을 AnyCPU로 설정하고 선택한 "Prefering 32 -Bit"을 취소하십시오.

프로젝트에 대한 탐색 & gt; 플랫폼 대상을 AnyCPU로 설정하십시오. 취소 "첫 번째 선택 32 비트".

이것은 강제 적용을 64 비트 프로세스로 작동시켜 WOW64 비정상 억제 문제를 제거합니다.

의 필수 디버거는 이상으로 중단됩니다. 디버그로 돌아갑니다.

> CLR을 선택하십시오. 비정상적인 "원인"확인란을 선택하십시오.
    이것은로드 이벤트 처리 프로그램의 위치에 관계없이 CLR 비정상 라인에서 필수 디버거의 실행을 중단합니다.
  1. 부하 이벤트 처리 프로세스에 이상 치료를 추가하십시오 :

      Try-Catch 블록을 사용하여로드 이벤트 처리에서 문제 코드를 포위하십시오.
    • 캐치 블록에 오류 메시지를 표시하고 갑자기 응용 프로그램을 종료하려면 실패를 사용하십시오.
    • 디버깅 중 비활성화 와우 64 비활성
    • main () 메소드에 추가 :
  2. 이것은 디버깅 중 메시지주기에서 비정상적인 캡처 비활성화가 비활성화됩니다.

    • 로드 이벤트 처리 절차의 사용을 피하십시오 :
    • re- 코드가 실제로로드 이벤트 처리 프로그램에 배치 해야하는지 여부를 재평가하십시오.
    • 일반적으로 사용자 기본 설정 또는 창 크기에 의존하지 않는 초기화 작업은 생성자에서 처리해야합니다.
  3. 추가 설명 :
  4. Windows 8 이상의 버전에서는이 문제가 해결되었습니다. 따라서 최신 운영 체제로 업데이트하면 솔루션을 제공 할 수도 있습니다.

위 내용은 VS2010을 사용하여 64 비트 Windows Winforms 응용 프로그램에서 예외 메시지가 누락 된 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.