Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何调试Windows上的.NET Core 3崩溃_C#_Wpf_.net Core_Crash_Windbg_Sos - Fatal编程技术网

C# 如何调试Windows上的.NET Core 3崩溃

C# 如何调试Windows上的.NET Core 3崩溃,c#,wpf,.net-core,crash,windbg,sos,C#,Wpf,.net Core,Crash,Windbg,Sos,在收到一位用户的报告后,我在VirtualBox虚拟机上安装了一个干净的Win7 x64,并尝试在那里运行我们的WPF.NET Core 3.0应用程序。每次我用一个通用的C#异常代码(e0434352)在没有任何堆栈跟踪的情况下关闭它,它肯定会崩溃。事件查看器显示缺少的堆栈跟踪(“堆栈:”及其后没有显示任何内容) 我尝试在WinDbg下运行它,但我得到的是: (4e0.608): C++ EH exception - code e06d7363 (first chance) ModLoad:

在收到一位用户的报告后,我在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
关于如何进一步调试它有什么想法吗? 每次我关闭程序时都会再现崩溃。在我试图关闭它之前,程序本身运行良好

更新: (答复意见)

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

!pe输出:

k输出:


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

事件查看器中是否存在其他错误?应用程序是否有异常处理和日志记录?您可以尝试GETLASTWINDOW32错误,但不认为它会提供其他信息。通常,当代码运行并在返回时获得异常时,这意味着堆栈错误对齐。通常,如果子程序和main函数声明的返回变量不同(子程序返回long,而main需要int)。如果使用x86和AnyCPU,是否会失败?事件查看器中有两个“应用程序错误”和两个“网络运行时”错误,这两个错误看起来相同,没有堆栈跟踪和相同的异常代码。编辑我的问题以回答所有问题。我尝试了。它说没有模块“coreclr”:(!pe说没有导出“pe”。@mephisto123:你能检查
lm
以确定加载了哪个运行时吗?如果
.loadby
失败,那么就没有
!pe
@mephisto:输出中有coreclr:
000007fe'f0bb0000 7fe'f1129000 coreclr(延迟)
你确定这是同样的情况吗?你是否进行了崩溃转储?哦,所以我必须先运行应用程序,并且在应用程序崩溃时只执行.loadby。这次.loadby命令没有错误。但是,!pe没有帮助,因为它说没有托管异常:@mephisto123:
!threads
显示所有线程,还应该列出其中的线程是一个例外。请同时创建一个崩溃转储,以便我们总是讨论同一个崩溃,而不是每次都讨论一个新的崩溃。