!runaway 命令出错

Error with !runaway command

我正在寻找从生产环境中收集的转储文件,用于高 cpu 使用率。我运行!threadpool!运行away命令如下

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 时间,但我不能 运行 !运行away 命令。在这种情况下,sos、sosex 或任何其他扩展中是否有任何其他命令可能有用?

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

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

Adds additional thread information to the minidump. This includes thread times, which can be displayed by using the !runaway extension or the .ttime (Display Thread Times) command when debugging the minidump.

(强调:WinDbg 中的链接)

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

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

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

如果有一行

1000 MiniDumpWithThreadInfo

信息已包含,您有不同的问题。如果不存在,则时间信息不可用。

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