!runaway命令出错

时间:2016-04-13 14:56:54

标签: windbg sos sosex

我正在寻找从生产环境中收集的转储文件以获得高CPU使用率。我运行!threadpool !runaway 命令,如下所示

0:000> !ThreadPool
CPU utilization: 100%
Worker Thread: Total: 6 Running: 2 Idle: 4 MaxLimit: 32767 MinLimit: 4
Work Request in Queue: 0
--------------------------------------
Number of Timers: 8
--------------------------------------
Completion Port Thread:Total: 8 Free: 3 MaxFree: 8 CurrentLimit: 8 MaxLimit: 1000 MinLimit: 4

0:000> !runaway
ERROR: !runaway: extension exception 0x80004002.
    "Unable to get thread times - dumps may not have time information"

我想知道什么线程消耗大部分cpu时间但我无法运行!runaway命令。在这种情况下,sos,sosex或任何其他扩展中是否有任何其他命令可以提供帮助?

1 个答案:

答案 0 :(得分:2)

您需要一个向转储添加必要信息的工具。

在WinDbg中,.dump命令具有/mt MiniOption,

  

向minidump添加其他线程信息。这包括线程时间,可以在调试minidump时使用!runaway 扩展名或 .ttime(显示线程时间)命令显示。

(重点:WinDbg中的链接)

t选项也包含在a选项中,因此.dump /ma也可以。

要确定您的转储是否包含该信息,请使用未记录的命令.dumpdebug,如下所示:

.shell -ci ".dumpdebug" findstr "MiniDump"

如果有一行

1000 MiniDumpWithThreadInfo

信息已包含,您有不同的问题。如果不存在,则无法获得时间信息。

我所知道的大多数其他工具都没有提供这样详细的设置,因此无论是否包含此信息,运气或多或少都是运气。