Maison > développement back-end > C++ > Pourquoi les exceptions non gérées manquent-elles dans mon application WinForms 64 bits VS2010?

Pourquoi les exceptions non gérées manquent-elles dans mon application WinForms 64 bits VS2010?

Patricia Arquette
Libérer: 2025-02-01 22:16:13
original
420 Les gens l'ont consulté

Why Are Unhandled Exceptions Missing in My 64-bit VS2010 WinForms Application?

Débogage des applications WinForms 64 bits dans VS2010: Exceptions non géandées manquantes

Débogage d'une nouvelle application Windows Windows 64 bits dans Visual Studio 2010? Vous pourriez trouver des exceptions non perdues ne déclenchent pas le débogueur. Cela est dû à la couche d'émulation WOW64, qui intercepte les exceptions dans le code répondant aux notifications de gestionnaire de fenêtres 64 bits (comme l'événement Form1_Load).

Cause profonde et impact

Le problème provient de l'incapacité de Windows à gérer correctement les exceptions passant du code 32 bits (votre application) au code 64 bits (la source de notification). Cela rend le débogage difficile car l'exception est invisible pour le débogueur.

Solutions

Voici plusieurs façons de résoudre ce problème:

  • cible anycpu, désactivez la préférence 32 bits: La définition de la cible de plate-forme de votre projet sur "AnyCPU" et le décocher "préfère 32 bits" force un processus 64 bits, en contournant le problème WOW64. Remarque: Cela désactive «Modifier et continuer» dans les versions vs avant 2013 et pourrait causer des problèmes avec les dépendances 32 bits.
  • Activer CLR Exception Throwing: Dans la fenêtre "Exceptions" du débogueur (Debug & GT; Exceptions), cochez la case "lancé" pour les exceptions CLR. Cela oblige un point de rupture à l'origine de l'exception.
  • Event Load Event dans try/catch: Entrez votre code de gestionnaire d'événements Load dans un bloc try/catch. Utilisez Environment.FailFast() dans le bloc catch pour un crash contrôlé avec un rapport détaillé.
  • Ajuster UnhandledExceptionMode: Dans votre méthode Main(), appelez Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException) pour empêcher la boucle de message de supprimer l'exception pendant le débogage.
  • Réévaluer Load Utilisation de l'événement: Consignez si le gestionnaire d'événements Load a vraiment besoin de tout son code. Le déplacement de certaines actions vers le constructeur pourrait aider.
  • Mettre à niveau vers Windows 8 ou version ultérieure: Les versions Windows plus récentes abordent le problème WOW64.

Ces solutions ne résolvent pas le problème sous-jacent, mais ils fournissent des moyens pratiques de déboguer les exceptions non perdues dans ce scénario.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal