1

我从我们的网络支持团队收到了一个小型转储文件。他们抱怨我们在生产节点上的一个站点导致 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),我将它们复制到符号文件夹但没有任何改变。

ps 我已经阅读了所有类似的帖子,但没有任何帮助。

4

1 回答 1

0

在 32 位调试器中打开转储并运行!wow64exts.sw. 您现在应该能够加载 SOS 并运行命令,但并非所有命令都能正常工作。这会有所帮助,但最好的解决方案仍然是使用 32 位工具收集转储。

于 2013-06-17T16:49:51.840 回答