我收到了来自我们网络支持团队的小型转储文件。他们抱怨我们生产节点上的一个站点会导致高CPU使用率。
Windows服务器是x64,但IIS应用程序池以32-bit
模式运行。网络/支持人员使用默认任务管理器来创建转储文件,因此我假设转储文件必须是64位的。
我下载了WinDbg x64。然后我尝试按照下面链接中给出的说明找到代码的哪个部分可能有问题:
虽然转储文件和WinDbg都是64位,但是当我运行“lmvm clr”命令时,调试器会显示以下行:
图片路径:C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
如果我运行此命令:
.loadby sos clr
然后!pe命令,我得到“没有导出!pe找到”(这种情况发生在任何其他命令,例如!CLRStack)。
如果我获得64位版本的mscordacwks.dll和sos.dll,并将它们复制到符号文件夹中,那么将加载这些库但是在运行!pe命令时我会得到"Failed to load data access DLL, 0x80004005 error message!
我做错了什么?我让网络团队向我发送.dll文件(sos.dll
和mscordacwks.dll),我将它们复制到符号文件夹但没有任何改变。
P.S。我已经阅读了所有相似的帖子但没有帮助。
答案 0 :(得分:0)
在32位调试器中打开转储并运行!wow64exts.sw
。您现在应该能够加载SOS并运行命令,但并非所有命令都能正常工作。这将有所帮助,但最好的解决方案是使用32位工具收集转储。