首页 >后端开发 >C++ >为什么在64位Windows上的Visual Studio 2010 Winforms应用程序中的未手持异常似乎消失了?

为什么在64位Windows上的Visual Studio 2010 Winforms应用程序中的未手持异常似乎消失了?

Linda Hamilton
Linda Hamilton原创
2025-02-01 22:21:12267浏览

Why Unhandled Exceptions Vanish in VS2010 WinForms Apps (64-bit Windows)

Visual Studio 2010:一个64位Windows Winforms异常处理Enigma

>在Visual Studio 2010中出现了一个奇怪的问题:在64位窗口上运行的Winforms应用程序中的例外通常会静静地消失。 该应用程序继续执行,没有预期错误消息或调试器中断。

>

>>>理解根本原因>

此行为链接到Windows的“ WOW64”层,该层模拟了64位系统上的32位代码。 当64位窗口管理器触发事件​​(例如

事件)时,WOW64拦截了32位进程的代码。 该截获的代码中未经处理的例外被掩盖,从而阻止了调试器捕获它们。Load

解决方案和解决方案

几种策略可以解决此问题:>

    >
  1. 目标平台调整:将项目的“平台目标”更改为“ Anycpu”(在Project Properties> Build中)。这使该应用程序成为64位流程,绕过WOW64。 注意:这可能会导致32位依赖性的兼容性问题。

    >
  2. debugger异常设置:>

    >

    >加载事件异常处理:将代码包装在
  3. >

    块中的事件处理程序中。 在>块中,终止应用程序以确保注意到例外。 Load try-catchcatch全局异常处理:

    在您的
  4. >方法中使用
  5. 。这在调试模式下捕获了未经治疗的例外,但可能会降低

    >事件的有效性。> Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException) Main()ThreadException>事件处理程序评论:考虑是否需要有问题的代码

  6. >事件中。 此事件并不总是必不可少的,并且不必要地使用它,尤其是在VB.NET中,可以掩盖更好的事件处理程序选择。

    >>操作系统升级:升级到Windows 8或更高版本,经常解决与WOW64相关的问题。Load

  7. 通过实现这些解决方案之一,您可以有效地调试和处理Visual Studio 2010 Winforms在64位Windows上的winforms应用程序。

以上是为什么在64位Windows上的Visual Studio 2010 Winforms应用程序中的未手持异常似乎消失了?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn