感觉这个问题可能有一个简单的答案,但我一直找不到。
所讨论的场景是 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
文件\DebugDiag\Exts\psscor4.dll
.NET 线程摘要
请求ThreadStore失败
我认为“无法请求 ThreadStore”是问题的关键,因为 .NET 3.5 .DMP 文件(使用 psscor2.dll)报告“线程摘要”标头下的所有线程信息。
问题是 .dmp 缺少信息,还是 DebugDiag 由于某种原因无法检索它?
最终,这个问题自行解决了。我向 Microsoft 发送了有关此问题的问题,他们说 DebugDiag 1.1 不支持 .NET 4+。他们不久前发布了 v1.2,它再次发挥了魅力:
http://www.microsoft.com/en-us/download/details.aspx?id=26798 http://www.microsoft.com/en-us/download/details.aspx?id=26798
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)