【发布时间】:2013-01-29 18:13:14
【问题描述】:
感觉可能有一个简单的答案,但我一直没能找到。
有问题的场景是一个 C# .NET 控制台应用程序。
我通常使用 DebugDiag 1.2 来检查来自我们遇到的挂起的 .dmp 文件 - 通常是线程锁定问题。它们是使用 DebugDiag 的“创建完整用户转储”选项创建的。
我最近开始编译面向 .NET 4 的应用程序,以准备开始使用 .NET 4 的一些功能。但是,我注意到在使用 DebugDiag 分析这些 .dmp 文件时,所有 .NET 堆栈信息都丢失了。
如果我将 CLR 目标改回 .NET 3.5,并从新的可执行文件中捕获 .dmp,则 .NET 调用堆栈信息就在那里。
当我查看 DebugDiag 的输出时,我看到一条注释说:
CLR 信息
CLR 版本 = 4.0.30319.17929 CLR 调试器扩展 = C:\Program Files\DebugDiag\Exts\psscor4.dll
.NET 线程总结
请求线程存储失败
我认为“请求线程存储失败”是问题的关键,因为 .NET 3.5 .DMP 文件(使用 psscor2.dll)报告了“线程摘要”标题下的所有线程信息。
问题是 .dmp 缺少信息,还是 DebugDiag 由于某种原因无法检索?
【问题讨论】:
-
相似,但不同。另一个问题的解决方案是“minidump 类型必须是 MiniDumpWithFullMemory”。 OP 说这是一个完整的内存转储,它在 .NET 3.5 中运行良好。
-
JakeL:你找到解决方案了吗?我创建了这个可能相关的线程:stackoverflow.com/questions/17432560/…