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

Pourquoi les exceptions non gérées sont-elles supprimées dans mon application VS2010 WinForms sous Windows 64 bits?

Mary-Kate Olsen
Libérer: 2025-02-01 22:11:09
original
293 Les gens l'ont consulté

Why Are Unhandled Exceptions Suppressed in My VS2010 WinForms App on 64-bit Windows?

Débogage des exceptions non perdues dans les applications WinForms 64 bits VS2010

Développer des applications WinForms dans VS2010 sur Windows 64 bits peut présenter un défi: le débogueur peut ne pas afficher des exceptions non perdues. Il s'agit d'un problème connu lié à la couche d'émulation Windows-on-Windows (WOW64).

Solutions:

Voici comment résoudre ce problème frustrant:

  1. Target anycpu (64 bits): Dans les propriétés de votre projet (projet & gt; Properties & gt; build), modifiez la "cible de plate-forme" en "anycpu" et décochez "préfèrent 32 bits". L'exécution en tant que processus natif 64 bits contourne les limitations WOW64.

  2. Activer "lancé" pour les exceptions CLR: Ouvrez la fenêtre des exceptions (Debug & gt; Exceptions) et cochez les exceptions "lancées" pour les exceptions de l'exécution du langage commun (CLR). Cela garantit que le débogueur se casse à l'origine de l'exception.

  3. Gérer les exceptions dans l'événement de chargement de Form1 (ou constructeur): Enveloppez votre code dans un bloc try-catch dans le gestionnaire d'événements Form1_Load (ou, de préférence, le constructeur). Dans le bloc catch, utilisez Application.Exit() pour mettre fin à l'application immédiatement, en fournissant des commentaires clairs.

  4. Utiliser Application.SetUnhandledExceptionMode: Dans votre méthode Main(), ajouter Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);. Cela empêche la boucle de message d'interférer avec la gestion des exceptions lors du débogage.

  5. Réévaluer le placement des gestionnaires d'événements: Déamiez si l'événement Load est le meilleur endroit pour votre code. Le constructeur pourrait être un emplacement plus approprié.

  6. mise à niveau (si possible): Les versions Windows ultérieures peuvent avoir résolu ce problème WOW64.

Comprendre la cause profonde:

Ce manque de visibilité d'exception est une bizarrerie documentée résultant de la difficulté de passer des exceptions de 32 bits à un code 64 bits dans l'environnement WOW64. Bien que ces solutions de contournement aident, la question sous-jacente reste un sujet de discussion en cours entre les équipes de Microsoft.

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