Maison > développement back-end > C++ > Pourquoi les messages d'exception manquent-ils dans les applications Windows Windows 64 bits à l'aide de VS2010?

Pourquoi les messages d'exception manquent-ils dans les applications Windows Windows 64 bits à l'aide de VS2010?

Susan Sarandon
Libérer: 2025-02-01 22:06:11
original
185 Les gens l'ont consulté

Why are Exception Messages Missing in 64-bit Windows WinForms Applications using VS2010?

VS2010 64 -bit Windows sous WinForms Application Outage manquant: en -prest Analysis and Solution of the Problem

Lorsque vous utilisez Visual Studio 2010 pour créer une nouvelle application Windows Forms sur le système Windows 64-bits, il peut rencontrer des problèmes qui n'ont pas été affichés et non préparés. Lorsque le code n'est pas traité dans le code dans le programme de traitement des événements de charge, le programme sautera la ligne de code problème et continuera à s'exécuter sans aucune erreur. Ceci est différent du comportement de l'interruption du débogueur attendu et de l'affichage inhabituel des informations non corrigées.

L'analyse des causes racine

Ce comportement anormal provenait de la couche de simulation WOW64 (Windows-on-Windows 64 bits) pour interagir avec le code 32 bits fonctionnant sur des systèmes 64 bits. Lorsque le gestionnaire de fenêtres 64-bits déclenche la notification, le code de réponse (tel que le programme de traitement des événements de charge) est exécuté dans un environnement à 32 bits. Si des anomalies se produisent dans ce code à 32 bits, la couche WOW64 peut avaler une anomalie et empêcher le débogueur de le détecter.

Solution et modification de la méthode

Définissez la cible de la plate-forme comme anycpu et annulez le "préfère 32 -bit" sélectionné:

  1. Navigation vers Project & gt; Attribut & gt; Définissez la cible de plate-forme sur AnyCPU.

      Annuler "The First Choice 32 -Bit".
    • Cela exploite l'application obligatoire en tant que processus 64-bits, éliminant ainsi le problème de la suppression anormale WOW64.
    • Le débogueur obligatoire est interrompu dans une anomalie:
  2. Tournez-vous en débogage & gt;

    Sélectionnez la case CLR anormale "causée".

    Cela suspendra l'exécution du débogueur obligatoire dans toute ligne anormale CLR, quelle que soit son emplacement dans le programme de traitement des événements de charge.
    • Ajouter un traitement anormal au processus de traitement des événements de charge:
  3. Siege le code de problème dans le traitement des événements de chargement à l'aide du bloc d'essai.
  4. Utilisez FailFast pour afficher un message d'erreur dans le bloc Catch et terminez soudainement l'application.

    • Désactiver la capture anormale WOW64 pendant le débogage:
  5. Ajouter à la méthode principale ():
    • Ce sera désactivé une capture anormale désactivée dans le cycle de message pendant le débogage.

      • Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
      Envisagez d'éviter l'utilisation des procédures de traitement des événements de charge:
    • re -évaluer si votre code doit vraiment être placé dans le programme de traitement des événements de charge.
    Habituellement, la tâche d'initialisation qui ne dépend pas des préférences de l'utilisateur ou de la taille de la fenêtre doit être traitée dans le constructeur.
  6. Description supplémentaire:

    • Dans Windows 8 et des versions supérieures, ce problème a été résolu. Par conséquent, la mise à jour d'un système d'exploitation plus récent peut également fournir des solutions.

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