在32位计算机上使用64位转储在WinDbg中丢失

时间:2009-08-27 16:07:26

标签: .net debugging windbg sos

我是WinDbg的新手,并从64位Windows 2008 Server上的WER ReportQueue文件夹中获取此转储。 我需要检查转储,并希望在我安装了Windows调试工具包的开发人员计算机上执行此操作。 当我尝试加载SOS时,我收到了以前从未见过的错误:

0:035> .loadby sos mscorwks
The call to LoadLibrary(C:\Windows\Microsoft.NET\Framework64\v2.0.50727\sos) failed, Win32 error 126
    "The specified module could not be found."
Please check your debugger configuration and/or network access.

我的机器运行的是32位Windows 7,显然没有Framework64文件夹。

我需要一些建议,指出我正确的方向。如果我想在32位计算机上检查64位进程的转储,我需要做什么?有可能这样做吗?

提前非常感谢!

2 个答案:

答案 0 :(得分:12)

如果要分析64位进程转储,则需要在64位计算机上运行64位版本的调试器。可以在32位和64位计算机上分析来自32位进程的转储。因此,如果您确定转储是来自64位进程,则需要在64位计算机上进行分析。

答案 1 :(得分:3)

问题不是你可以从32位WinDbg分析64位转储。从WinDbg帮助文件:

如果要分析转储文件,并且转储文件是在Windows XP或更高版本的Windows上制作的,则可以使用32位软件包或x64软件包。 (转储文件是用户模式转储文件还是内核模式转储文件并不重要,转储文件是在基于x86的平台还是基于x64的平台上进行并不重要。)

如果要分析转储文件,并且转储文件是在Windows 2000操作系统上生成的,则应使用32位软件包。 (转储文件是用户模式转储文件还是内核模式转储文件并不重要)

如果您正在执行实时内核模式调试,并且目标计算机运行的是Windows XP或更高版本的Windows,则可以使用32位软件包或x64软件包。 (这种情况适用于基于x86和基于x64的目标。)

如果您正在执行实时内核模式调试,并且目标计算机运行的是Windows 2000,则应使用32位软件包。

如果您正在执行实时用户模式调试,请使用x64包来调试具有64位和32位代码的WOW64。要调试其他目标,请使用32位调试器来调试32位代码。

问题是什么?在这里,您尝试加载64位扩展来分析问题。在32位WinDbg上加载64位扩展是不可能的。那么问题是32位版本的SOS是否支持64位分析,你能否强制WinDbg使用32位SOS?

您可以使用

强制加载特定版本的SOS

。按http://msdn.microsoft.com/en-us/library/bb190764.aspx

加载

但是我希望32位版本无法分析64位进程,但是还没试过。