gpt4 book ai didi

c# - 捕获仅在 Release 上发生的 .NET 错误,不抛出异常

转载 作者:太空狗 更新时间:2023-10-30 00:46:18 25 4
gpt4 key购买 nike

我目前看到一个错误,该错误只发生在我的 exe 的“发布”模式下。

因此,我没有附加调试器,应用程序只会显示“...已停止工作。”。

我最初的 react 是在我的主循环中捕获所有异常并显示其消息,但结果没有抛出任何异常,程序只是崩溃了。 (我的程序是单线程的)。

这可能与我集成非托管代码有关,但即便如此,为什么在 Release模式下会有所不同?我有什么办法可以捕获该异常吗?

我怀疑它是在调试器中运行时出现“无法显示堆栈跟踪/查找代码”的错误之一(实际上并没有抛出异常),但老实说我无法测试它。有什么建议吗?

最佳答案

即使它在 Release模式下运行,您仍然可以将调试器附加到它。您可以尝试类似...

  • 编写程序,使其在开始执行时等待按键
  • 在 Release模式下运行
  • 在等待按键时附加调试器
  • 调试

然后看看会发生什么。如果即使在 Release模式下运行时它停止发生并在调试器下工作,那么你有一个 Heisenbug (基本上意味着很难找到这个错误)。

但是,如果发生这种情况并且 Visual Studio 调试器在问题发生时中断,则查看“线程”窗口(我认为是 Ctrl+Alt+H)。有可能,虽然您的应用程序只使用一个线程,但您运行的 native 代码可能会启动它自己的非托管线程。如果是这种情况,您也许可以找到一种方法让它停止这样做,因为不幸的是,没有办法在您的托管代码中捕获该异常。

关于c# - 捕获仅在 Release 上发生的 .NET 错误,不抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3697499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com