Ошибка с командой! Runaway
Я ищу файл дампа, собранный из производственной среды для высокой загрузки процессора. Я запустил команду! 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"
Я хочу знать, какие потоки занимают больше всего процессорного времени, но я не могу запустить команду! Runaway. Существуют ли какие-либо другие команды в sos, sosex или любом другом расширении, которые могут быть полезны в этом случае?
1 ответ
Вам нужен инструмент, который добавляет необходимую информацию в дамп.
В WinDbg .dump
команда имеет /mt
MiniOption, который
Добавляет дополнительную информацию о потоке в мини-дамп. Это включает время потоков, которое можно отобразить с помощью расширения ! Runaway или команды .ttime (Показать время потоков) при отладке мини-дампов.
(Акцент: ссылки в WinDbg)
t
опция включена в a
вариант, так что .dump /ma
тоже хорошо
Чтобы выяснить, есть ли в вашем дампе эта информация, используйте недокументированную команду .dumpdebug
как это:
.shell -ci ".dumpdebug" findstr "MiniDump"
Если есть строка
1000 MiniDumpWithThreadInfo
информация содержится, и у вас есть другая проблема. Если его там нет, информация о времени недоступна.
Большинство других инструментов, которые я знаю, не предоставляют такие подробные настройки, поэтому более или менее удачно, включена эта информация или нет.