【问题标题】:Windbg - !clrstackWindbg - !clrstack
【发布时间】:2014-04-14 12:20:12
【问题描述】:

我正在尝试使用 64 位 Windbg(版本 6.10)调试 64 位 w3wp 进程的手动转储文件。转储是使用 taskmgr 进行的。我无法从 !clrstack 命令中得到任何东西。这是我得到的:

!loadby sos clr

!runaway

User Mode Time
  Thread       Time
  17:cf4       0 days 5:37:42.455

~17s

ntdll!ZwDelayExecution+0xa:

00000000`776208fa c3 ret

!clrstack

GetFrameContext failed: 1

GetFrameContext failed: 1 是什么?

【问题讨论】:

  • 输入命令 ||验证你有什么样的转储。对于 .NET 应用程序,这需要是“全内存用户小型转储”。此外,运行 !threads 以概述所有托管线程。您当前指向线程 #17 (~17s),但它可能不是托管线程。对于原生线程,可以使用 k 命令查看堆栈。
  • @Dono:任务管理器创建完整的内存转储。对于非托管线程,!clrstack 通常说“无法遍历托管堆栈。”,而不是“GetFrameContext 失败”。
  • 看来你并不孤单,但没有答案:stackoverflow.com/questions/7878112/…
  • 可以使转储可用吗?

标签: windbg


【解决方案1】:

使用 !dumpstack 命令代替 !clrstack。它通常有效。

【讨论】:

    【解决方案2】:

    尝试通过执行“k”来获取“本机”调用堆栈,看看会得到什么。有时,堆栈并不完全正确,而 !ClrStack 扩展非常敏感。

    【讨论】:

      猜你喜欢
      • 2012-02-07
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 2016-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多