首页 >后端开发 >C++ >为什么在64位窗口上的VS2010 Winforms应用中抑制了未经手的异常?

为什么在64位窗口上的VS2010 Winforms应用中抑制了未经手的异常?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-02-01 22:11:09350浏览

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