Ошибка с командой! 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

информация содержится, и у вас есть другая проблема. Если его там нет, информация о времени недоступна.

Большинство других инструментов, которые я знаю, не предоставляют такие подробные настройки, поэтому более или менее удачно, включена эта информация или нет.

Другие вопросы по тегам