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?
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:
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.
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.
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.
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.
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é.
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!