【问题标题】:SOS does not support the current target architectureSOS 不支持当前目标架构
【发布时间】:2013-05-01 14:45:51
【问题描述】:

我正在尝试使用 windbg 研究在 x64 机器上为我们的 x86 进程创建的挂起转储文件。这是一个 4.0 x86 应用程序,所以为了获得非托管堆栈,我必须执行以下操作:

.loadby sos clr
.load wow64exts
!sw
kL

但是,每次我尝试通过 !clrstack 获取托管堆栈时,我都会在标题中看到错误。我错过了什么?

【问题讨论】:

  • 您是否在 Windows 8 机器上运行 WinDbg?我只在 Windows 8 机器上收到相同的错误消息。如果我将内存转储到文件中,即使我执行 !wow64exts.sw 切换到 32 位模式,我也无法运行 SOS。但是,如果我附加到进程,我可以执行 SOS...

标签: c# .net-4.0 windbg dump freeze


【解决方案1】:

我相信您必须使用位于 C:\Windows\SysWOW64\taskmgr.exe 中的 32 位任务管理器来获取 32 位转储。

更多信息在这里:http://blogs.msdn.com/b/tess/archive/2010/09/29/capturing-memory-dumps-for-32-bit-processes-on-an-x64-machine.aspx

【讨论】:

  • 那么,有没有办法使用当前的转储?
  • 上面链接中的一条评论提到运行 !wow64exts.sw,它可以让您运行堆栈相关的命令,例如 !clrstack。我自己从来没有尝试过,因为我已经能够获取一个新的转储。
  • 我将把这个打开一天左右,看看是否有人有一个不是我的答案,否则我会接受这个
【解决方案2】:

正如其他人已经说过的,这可能是由 64 位应用程序(例如默认的任务管理器)创建 32 位进程的转储文件引起的。

我能够使用来自poizan42 on GitHub 的soswow64 WinDbg 扩展解决这个问题。我是通过this blog entry找到的,它还提供了有关该问题的一些更详细的信息。

【讨论】:

  • 我很确定这应该是现在的答案,但我可能有点偏颇;)
  • @poizan42 非常感谢 soswow64,它让我的工作轻松多了!
  • @poizan42:这是一个很棒的工具,应该引起更多关注。它也适用于最新平台 SDK 的 10.0.17713.1000 的 Windbg。干得好!
【解决方案3】:

我一直遵循位数匹配的建议,但直到我看到这篇文章才知道确切原因:http://blogs.msdn.com/b/dotnet/archive/2013/05/01/net-crash-dump-and-live-process-inspection.aspx 其中指出:

"DAC 有一个标准化的接口,被调试器用来 获取有关这些抽象状态的信息,例如, 托管堆。必须使用与 CLR 匹配的 DAC 版本和您想要的进程或故障转储的体系结构 检查。”

"注意DAC是原生DLL,必须加载到程序中 使用 ClrMD。如果转储或实时进程是 32 位的,则必须 使用 32 位版本的 DAC,这反过来意味着您的 检查程序也需要是 32 位的。对于 64 位进程。确保您的程序平台与 你正在调试。”

【讨论】:

    【解决方案4】:

    还有一个对我有用的选项: - 我有一个 64 位进程的崩溃转储。 - 所以,首先,我需要进行转储的机器 (C:\Windows\Microsoft.NET\Framework64\v4.0.30319) 中的 SOS.dll 和 mscordacwks.dll。 - 基于两篇msdn文章(http://msdn.microsoft.com/en-gb/library/windows/hardware/ff562263%28v=vs.85%29.aspx,http://msdn.microsoft.com/en-gb/library/windows/hardware/ff540665%28v=vs.85%29.aspx),我是这样加载CLR的:

    .cordll -u -ve -I clr -lp <path to SOS.dll & mscordacwks.dll>
    

    在此之后, !threads 工作。我认为,同样适用于 32 位故障转储。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-02
      • 2018-07-14
      • 1970-01-01
      • 2013-02-08
      • 1970-01-01
      相关资源
      最近更新 更多