ホームページ > バックエンド開発 > C++ > Visual Studio 2010の未処理の例外が、64ビットのウィンドウにあるWinformsアプリが消えるように見えるのはなぜですか?

Visual Studio 2010の未処理の例外が、64ビットのウィンドウにあるWinformsアプリが消えるように見えるのはなぜですか?

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例外の取り扱いエニグマ

Visual Studio 2010で奇妙な問題が発生します。64ビットのウィンドウで実行されているWinformsアプリケーションでは、扱いにくい例外が静かに消えることがよくあります。 アプリケーションは、予想されるエラーメッセージまたはデバッガーの休憩なしで実行を継続します。

根本原因を理解する

この動作は、64ビットシステムで32ビットコードをエミュレートするWindowsの「Wow64」レイヤーにリンクされています。 64ビットのウィンドウマネージャーがイベント(

イベントなど)をトリガーすると、WOW64は32ビットプロセスのコードを傍受します。 この傍受されたコード内の未解決の例外はマスクされており、デバッガーがそれらをキャッチするのを防ぎます。 Load

ソリューションと回避策いくつかの戦略は、この問題に対処できます:

ターゲットプラットフォームの調整:
    プロジェクトの「プラットフォームターゲット」を「Anycpu」(プロジェクトプロパティ>ビルド)に変更します。これにより、アプリケーションは64ビットプロセスになり、WOW64をバイパスします。 注:これにより、32ビット依存関係の互換性の問題が発生する可能性があります
  1. デバッガー例外設定:

    in debug>例外、CLRの例外については、「スローされた」ボックスを確認してください。 これにより、例外が発生したときにデバッガーが一時停止します
  2. ロードイベント例外処理:イベントハンドラー内のコードを

    ブロックに巻き付けます。
  3. ブロックで、例外が確認されるようにアプリケーションを終了します。
  4. Loadグローバル例外処理:try-catchcatchメソッドを使用します。これにより、デバッグモードでは扱われていない例外がキャッチされますが、

    イベントの有効性を低下させる可能性があります。
  5. イベントハンドラーのレビュー:問題のあるコードがApplication.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException)イベントにある必要があるかどうかを検討します。 このイベントは必ずしも必ずしも不可欠ではなく、特にVB.NETで不必要に使用すると、より良いイベントハンドラーの選択肢が不明瞭になる可能性があります。 Main() ThreadException

  6. オペレーティングシステムのアップグレード:
  7. Windows 8以降にアップグレードすると、このWOW64関連の問題が解決されることがよくあります。

    これらのソリューションのいずれかを実装することにより、64ビットウィンドウのVisual Studio 2010 Winformsアプリケーションで、ハンドルのない例外を効果的にデバッグおよび処理できます。

以上がVisual Studio 2010の未処理の例外が、64ビットのウィンドウにあるWinformsアプリが消えるように見えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート