2009-08-27 166 views
1

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

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位进程的转储,我需要做些什么?是否有可能做到这一点?

非常感谢提前!

回答

12

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

+0

Windbg对远程调试有很大的支持,http://msdn.microsoft.com/en-us/library/ff554416(v=VS.85).aspx。将转储装载到64位计算机上,然后将32位计算机用作客户端。 – LanceSc 2011-09-12 23:00:43

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特定版本的使用

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

加载但是我希望在32位版本将无法正常工作,分析一个64位的过程中,避风港这个虽然尝试过。

相关问题