【问题标题】:Lost in WinDbg with 64-bit dump on 32-bit machine在 32 位机器上使用 64 位转储迷失在 WinDbg 中
【发布时间】:2009-08-27 16:07:26
【问题描述】:

我是 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 位进程的转储,我需要做什么?可以这样做吗?

提前致谢!

【问题讨论】:

    标签: .net debugging windbg sos


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

    问题不在于您可以从 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 位进程,但没有尝试过。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-08
      • 1970-01-01
      • 2014-12-16
      • 1970-01-01
      • 2011-04-29
      • 2011-04-09
      • 2013-03-23
      相关资源
      最近更新 更多