如何在WinDBG中查看托管异常详细信息?

问题描述 投票:0回答:2

VS2005 C# 编译器在我们团队的夜间构建过程中崩溃。 我用 WinDBG 附加到它,加载 SOS 扩展,打印调用堆栈,但看不到异常信息。

我尝试了!PrintException,如下:

 0:000> !PrintException
    该线程当前没有托管异常

这是调用堆栈的顶部:

 0:000> !CLRStack
    操作系统线程 ID:0x9fc (0)
    ESP电子IP     
    0012ee08 77e4bef7 [ComPlusMethodFrameGeneric: 0012ee08] Microsoft.Build.Tasks.Hosting.ICscHostObject.Compile()
    0012ee18 6be671ab Microsoft.Build.Tasks.Csc.CallHostObjectToExecute()
    0012ee48 6c0aed17 Microsoft.Build.Utilities.ToolTask.Execute()
c# exception windbg sos
2个回答
6
投票

您没有看到异常的原因是 C# 编译器不是用托管代码编写的。 它是一个 C++ 项目,因此不会抛出 CLR 异常。 您需要寻找本机错误。


2
投票

我明白了! 所需要做的就是从 WinDBG 保存转储 (*.dmp) 文件并在 Visual Studio 中重新打开它。

欲了解完整的解决方案,请查看 我之前的问题

© www.soinside.com 2019 - 2024. All rights reserved.