Windbg 错误!失控命令

Windbg 错误!失控命令,windbg,sos,sosex,Windbg,Sos,Sosex,我正在寻找一个从生产环境中收集的转储文件,以获得高cpu使用率。我跑了!线程池和!失控命令如下 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 ---

我正在寻找一个从生产环境中收集的转储文件,以获得高cpu使用率。我跑了!线程池和!失控命令如下

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时间最多,但我无法运行!逃跑命令。在这种情况下,sos、sosex或任何其他扩展中是否有任何其他命令可能会有所帮助?

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

在WinDbg中,
.dump
命令具有
/mt
小选项,该选项

将其他线程信息添加到迷你转储。这包括线程时间,可使用显示!调试小型转储时,使用runaway扩展或.ttime(显示线程时间)命令

(重点:WinDbg中的链接)

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

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

.shell -ci ".dumpdebug" findstr "MiniDump"
如果有排队的话

1000 MiniDumpWithThreadInfo
信息包含在内,您有一个不同的问题。如果不存在,则时间信息不可用


我所知道的大多数其他工具都没有提供如此详细的设置,所以不管是否包含此信息,都或多或少是幸运的。

您是如何捕获转储的?我会使用ETW/WPA来分析CPU使用情况:但是使用WPRUI.exe(在Resource select CPU usage下,单击1分钟后开始,单击save)Hi@Thomas,我已经尝试了您的建议,并且我能够在输出中获得
1000 MiniDumpWithThreadInfo
。您能否建议一些基本命令来排除
故障的可能原因!失控
命令。@AjendraPrasad:你能通过电子邮件与我联系,并为as提供受影响的崩溃转储,以便我分析问题吗?我从来没有遇到过这样的情况,所以我不知道下一步该怎么办。首先我自己需要一些时间。谢谢你的合作,但是垃圾场是有保密协议的。但是,我尝试了另一个Microsoft工具来分析转储文件“下载调试诊断工具v1.2”。它为我提供了最耗时的5个线程。再次感谢