Heim >Backend-Entwicklung >C++ >Warum fehlen Ausnahmemeldungen in 64-Bit-Windows-Winforms-Anwendungen mit VS2010?

Warum fehlen Ausnahmemeldungen in 64-Bit-Windows-Winforms-Anwendungen mit VS2010?

Susan Sarandon
Susan SarandonOriginal
2025-02-01 22:06:11188Durchsuche

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

VS2010 64 -Bit -Windows Under WinForms Application Fehlender Ausfall: In -tpth -Analyse und Lösung des Problems

Bei der Verwendung von Visual Studio 2010, um eine neue Windows -Formulationsanwendung auf dem 64 -Bit -Windows -System zu erstellen, kann dies auf Probleme stoßen, die nicht angezeigt und nicht vorbereitet wurden. Wenn der Code im Code im Programm zur Verarbeitung von Ereignisereignissen nicht im Code verarbeitet wird, überspringt das Programm die Problemcodezeile und wird weiterhin ohne Fehler ausgeführt. Dies unterscheidet sich von dem Verhalten der erwarteten Debugger -Unterbrechung und der ungewöhnlichen Anzeige der ungewöhnlichen Informationen.

Die Ursachenanalyse

Dieses abnormale Verhalten stammt aus WOW64 (Windows-on-Windows 64-Bit) -Simulationsschicht, um mit 32-Bit-Code zu interagieren, das auf 64-Bit-Systemen ausgeführt wird. Wenn der 64 -Bit -Fenstermanager die Benachrichtigung auslöst, wird der Antwortcode (z. B. das Last -Ereignisverarbeitungsprogramm) in einer 32 -Bit -Umgebung ausgeführt. Wenn in diesem 32 -Bit -Code Anomalien auftreten, kann die WOW64 -Schicht Abnormalität schlucken und verhindern, dass der Debugger sie erkennt.

Lösung und Änderungsmethode

Legen Sie das Plattformziel als AnyCPU ein und stornieren Sie das ausgewählte "Bevorzugt 32 -Bit":

  1. Navigation zu Projekt & GT; Stellen Sie das Plattformziel auf AnyCPU ein.

      Abbrechen "Die erste Wahl 32 -Bit".
    • Dies betreibt die obligatorische Anwendung als 64 -Bit -Prozess, wodurch das Problem der abnormalen WOW64 -Unterdrückung beseitigt wird.
    • Der obligatorische Debugger wird in Anomalien unterbrochen:
  2. Wenden Sie sich an Debugg & gt;

    Kontrollkästchen CLR Abnormal "verursacht".

    Dies wird die Ausführung des obligatorischen Debuggers in jeder CLR -abnormalen Linie unabhängig von seinem Standort im Last -Event -Verarbeitungsprogramm aussetzen.
    • Fügen Sie dem Lastereignisverarbeitungsprozess eine anomale Behandlung hinzu:
  3. den Problemcode in der Ladeereignisverarbeitung mit dem Try-Catch-Block belagern.
  4. Verwenden Sie fehlerhaft, um eine Fehlermeldung im Catch -Block anzuzeigen und die Anwendung plötzlich zu beenden.

    • Deaktivieren Sie die wow64 abnormale Erfassung während des Debuggens:
  5. zur main () -Methode hinzufügen:
    • Dies wird während des Debuggens abnormale Erfassung deaktiviert, die im Nachrichtenzyklus deaktiviert sind.

      • Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
      Erwägen Sie, die Verwendung von Ladungsereignisverarbeitungsverfahren zu vermeiden:
    • revaluse, ob Ihr Code wirklich im Last -Event -Verarbeitungsprogramm platziert werden muss.
    Normalerweise sollte die Initialisierungsaufgabe, die nicht von den Benutzereinstellungen oder der Fenstergröße abhängt, im Konstruktor verarbeitet werden.
  6. Zusätzliche Beschreibung:

    • In Windows 8 und höheren Versionen wurde dieses Problem behoben. Daher kann die Aktualisierung eines neueren Betriebssystems auch Lösungen bereitstellen.

Das obige ist der detaillierte Inhalt vonWarum fehlen Ausnahmemeldungen in 64-Bit-Windows-Winforms-Anwendungen mit VS2010?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn