首頁 >後端開發 >C++ >為什麼在64位窗口上的VS2010 Winforms應用中抑制了未經手的異常?

為什麼在64位窗口上的VS2010 Winforms應用中抑制了未經手的異常?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-02-01 22:11:09296瀏覽

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

在64位VS2010 Winforms應用程序中,調試未手動異常 在VS2010上的64位窗口中開發Winforms應用程序可能會提出一個挑戰:調試器可能無法顯示未手持的異常。這是與Windows-on-windows(WOW64)仿真層有關的已知問題。

> >解決方案:

這是解決這個令人沮喪的問題的方法:

>

>目標Anycpu(64位):在您的項目屬性(Project≫ properties> build)中,將“平台目標”更改為“ Anycpu”,然後取消選中“更喜歡32位元". 作為本機64位進程運行繞過WOW64限制。

>

  1. >

    啟用“拋出”的clr異常:打開異常窗口(debug> exceptions),然後選中“拋棄”框以獲取通用語言運行時(CLR)異常。這樣可以確保調試器以例外的起源為中斷。 >

  2. 在Form1的負載事件(或構造函數)中處理異常:
  3. 將代碼包裝在

    >事件處理程序中的A>塊中(或最好是構造函數)。 在>塊中,使用

    立即終止應用程序,提供清晰的反饋。
  4. >
  5. 在您的try-catch方法中使用Form1_Loadcatch,添加Application.Exit()。這樣可以防止消息循環在調試期間干擾異常處理。

    >
  6. >重新評估事件處理程序位置:考慮Application.SetUnhandledExceptionMode事件是否是代碼的最佳場所。構造函數可能是一個更合適的位置。 Main() Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);

    >
  7. >升級(如果可能的話):
  8. 以後的Windows版本可能已經解決了WOW64問題。

    Load理解根本原因:

    >
  9. 缺乏例外可見性是一個有記錄的怪癖,這是由於在WOW64環境中將異常從32位傳遞到64位代碼的困難。 儘管這些解決方法有所幫助,但基本問題仍然是微軟團隊之間正在進行的討論的主題。

以上是為什麼在64位窗口上的VS2010 Winforms應用中抑制了未經手的異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn