【问题标题】:How to debug .NET Core 3 crashes on Windows如何在 Windows 上调试 .NET Core 3 崩溃
【发布时间】:2023-03-24 23:04:01
【问题描述】:

根据我们的一位用户的报告,我在 VirtualBox 虚拟机上安装了一个干净的 Win7 x64,并尝试在那里运行我们的 WPF .NET Core 3.0 应用程序。每次我使用通用 C# 异常代码 (e0434352) 关闭它而没有任何堆栈跟踪时,它肯定会崩溃。事件查看器显示丢失的堆栈跟踪(“堆栈:”,之后没有任何内容)。

我试过在 WinDbg 下运行它,但我得到的只是:

(4e0.608): C++ EH exception - code e06d7363 (first chance)
ModLoad: 000007fe`fb8a0000 000007fe`fb8cc000   C:\Windows\system32\POWRPROF.DLL
(4e0.ab4): Unknown exception - code 0000071a (first chance)
ModLoad: 000007fe`fc860000 000007fe`fc8b7000   C:\Windows\system32\apphelp.dll
ModLoad: 000007fe`edd20000 000007fe`eddbc000   C:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscoreei.dll

关于如何进一步调试它的任何想法? 每次我关闭程序时都会重现崩溃。在我尝试关闭它之前,程序本身运行良好。

更新: (回答cmets)

  • 我们使用的是 win-x64 独立部署;
  • 我们的应用处理所有首次机会异常并记录它们,在关闭之前没有(日志看起来像关闭正常);
  • 我们的应用有一个使用相同技术堆栈(WPF .NET Core 3.0 win-x64 自包含应用)编写的更新程序,它可以正常关闭;
  • 刚刚在另一台装有 Win7 x64 的机器(这次是真机)上对其进行了测试 - 也崩溃了;
  • 在该虚拟机上安装了 Visual Studio,在我关闭它后程序仍然崩溃,但即使我从 VS 以调试模式启动应用程序,Visual Studio 也不会捕获任何内容。

!线程输出:

https://pastebin.com/RAz1ZCnU

!pe 输出:

https://pastebin.com/1C8Eh87f

k 输出:

https://pastebin.com/yYq51JzC

【问题讨论】:

  • 事件查看器中还有其他错误吗?应用程序是否有异常处理和日志记录?
  • 您可以尝试 GETLASTWINDOW32 错误,但不要认为它会提供更多信息。通常,当代码运行并返回异常时,这意味着堆栈未对齐。通常,如果子程序和主函数声明的返回变量不同(子程序返回 long 而 main 需要 int)。如果你使用 x86 和 AnyCPU 会失败吗?
  • 事件查看器中有两个“应用程序错误”和两个“NET 运行时”错误,两个错误看起来一样,没有堆栈跟踪和相同的异常代码。
  • 编辑了我的问题以回答所有问题。

标签: c# wpf .net-core crash windbg


【解决方案1】:

WinDbg 不支持 .NET。对于 .NET 特定信息,您需要 扩展名。通常 .loadby sos clr 用于 .NET,.loadby sos coreclr 用于 .NET Core。然后使用!printexception(简称:!pe)获取有关异常的 .NET 特定详细信息。

【讨论】:

  • 我试过了。它说没有模块 'coreclr' :( !pe 说没有导出 'pe'。
  • @mephisto123: 你能检查lm 来确定加载了哪个运行时吗?如果.loadby 失败,则没有!pe
  • @mephisto:输出中有 coreclr:000007fe'f0bb0000 000007fe'f1129000 coreclr (deferred) 你确定这是同样的情况吗?你做了崩溃转储吗?
  • 哦,所以我必须先运行应用程序,并且只在它崩溃时执行 .loadby。这次 .loadby 命令没有错误。但是, !pe 没有帮助,因为它说没有托管异常:pastebin.com/1C8Eh87f
  • @mephisto123: !threads 显示所有线程并且还应该列出哪个线程有异常。请同时创建一个故障转储,以便我们总是谈论同一个崩溃,而不是每次都讨论新的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-25
  • 2010-10-06
  • 2017-09-17
相关资源
最近更新 更多