在 32 位机器上的 64 位转储中丢失 WinDbg
我是 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 位进程的转储,我需要做什么?可以这样做吗?
非常感谢!
I'm a newbie with WinDbg and got this dump from the WER ReportQueue folder on a 64-bit Windows 2008 Server.
I need to examine the dump and want to do so on my developer machine on which I've installed the Debugging Tools for Windows package.
When I try to load SOS I got the following error which I've never seen before:
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.
My machine is running 32-bit Windows 7, which obviously doesn't have the Framework64 folder.
I need some advice pointing me in the right direction here. What do I need to do if I want to examine the dump from a 64-bit process on a 32-bit machine? Is it possible to do this?
Big thanks in advance!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果要分析 64 位进程转储,则需要在 64 位计算机上运行 64 位版本的调试器。可以在 32 位和 64 位计算机上分析 32 位进程的转储。因此,如果您确定转储来自 64 位进程,则需要在 64 位计算机上对其进行分析。
If you want to analyze a 64-bit process dump then you need to run the 64 bit version version of the debugger on a 64-bit machine. A dump from 32-bit process can be analyzed on 32-bit and 64-bit machine. So if you are sure the dump is from 64-bit process, it needs to be analyzed on 64-bit machine.
问题不在于您可以从 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吗?
您可以
按照 http://msdn.microsoft.com/en-us/library/bb190764.aspx" rel="nofollow">http:// /msdn.microsoft.com/en-us/library/bb190764.aspx
但是,我预计 32 位版本无法分析 64 位进程,但还没有尝试过。
The issue is not that you can analyze 64-bit dump from 32-bit WinDbg you can. From the WinDbg help file:
If you are analyzing a dump file, and if the dump file was made on Windows XP or a later version of Windows, you can use either the 32-bit package or the x64 package. (It is not important whether the dump file is a user-mode dump file or a kernel-mode dump file, and it is not important whether the dump file was made on an x86-based or an x64-based platform.)
If you are analyzing a dump file, and if the dump file was made on Windows 2000 operating system, you should use the 32-bit package. (It is not important whether the dump file is a user-mode dump file or a kernel-mode dump file)
If you are performing live kernel-mode debugging, and if the target computer is running Windows XP or a later version of Windows, you can use either the 32-bit package or the x64 package. (This situation applies to both x86-based and x64-based targets.)
If you are performing live kernel-mode debugging, and if the target computer is running Windows 2000, you should use the 32-bit package.
If you are performing live user-mode debugging, use the x64 package for debugging WOW64 with both 64-bit and 32-bit code. To debug other targets, use a 32-bit debugger to debug 32-bit code.
What is the issue? Here you are trying to load a 64-bit extension to analyze the problem. It is not possible to load 64-bit extensions on 32-bit WinDbg. The question would then be does the 32-bit version of SOS support 64-bit analysis, can you force WinDbg to use the 32-bit SOS?
You can force a specific version of SOS to load by using
.load as per http://msdn.microsoft.com/en-us/library/bb190764.aspx
However I expect the 32-bit version wouldn't work to analyze a 64-bit process, haven't tried this though.