首页 > 后端开发 > C++ > 为什么我的64位VS2010 Winforms应用程序中缺少未经手的例外?

为什么我的64位VS2010 Winforms应用程序中缺少未经手的例外?

Patricia Arquette
发布: 2025-02-01 22:16:13
原创
466 人浏览过

Why Are Unhandled Exceptions Missing in My 64-bit VS2010 WinForms Application?

VS2010中的64位Winforms应用程序调试:失踪的异常

在Visual Studio 2010中调试新的64位Windows Winforms应用程序吗?您可能会发现未经处理的例外没有触发调试器。这是由于WOW64仿真层造成的,该层拦截了代码中响应64位窗口管理器通知的异常(例如

>事件)。Form1_Load

根本原因和影响>

问题源于Windows的无法正确处理从32位(您的应用程序)移动到64位(通知源)代码的异常。 这使调试变得困难,因为调试器是看不见的。

>

solutions

以下几种方法可以解决以下方法:

>

  • 针对Anycpu,禁用32位偏好:将项目的平台目标设置为“ Anycpu”,并取消选中“偏爱32位”强迫64位流程,绕过WOW64问题。 注意:这可以在2013年之前使用VS版本“编辑和继续”,并可能引起32位依赖关系的问题。 >
  • >启用CLR异常投掷:在调试器的“异常”窗口(debug>例外)中,查看“抛弃”框以获取CLR异常。这迫使例外的断裂点。
  • wrap
  • 中的事件: > Load事件处理程序代码在try/catch> block中。 在块中使用Load,用于带有详细报告的受控崩溃。 try/catch>Environment.FailFast()调整catch
  • >在您的
  • >方法中,调用>以防止消息循环在调试过程中抑制异常。UnhandledExceptionMode> Main()>重新评估Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException)事件用法:考虑
  • 事件处理程序是否确实需要其所有代码。 将一些动作移动给构造函数可能会有所帮助。 Load>>升级到Windows 8或更高版本:Load
  • 新的Windows版本解决WOW64问题。
  • 这些解决方案没有解决潜在的问题,但是它们提供了在这种情况下调试未经治疗例外的实用方法。>

以上是为什么我的64位VS2010 Winforms应用程序中缺少未经手的例外?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板