Поделиться через


!Стеки

Расширение !stacks отображает сведения о стеках ядра.

Синтаксис

!stacks [Detail [FilterString]] 

Параметры

Подробность
Указывает уровень детализации, используемый в отображении. В следующей таблице перечислены допустимые значения для сведений.

0

Отображает сводку по текущим стекам ядра. Это значение по умолчанию.

1

Отображает стеки, которые в настоящее время выводятся на страницу, а также текущие стеки ядра.

2

Отображает полные параметры для всех стеков, а также стеки, которые в настоящее время выводятся и текущие стеки ядра.

FilterString
Отображает только потоки, содержащие указанную подстроку в символе.

DLL-библиотеки

Kdexts.dll

Дополнительная информация

Сведения о стеках ядра см. в разделе "Внутренние компоненты Microsoft Windows", Марк Руссинович и Дэвид Соломон.

Замечания

Расширение !stacks содержит краткую сводку о состоянии каждого потока. Это расширение можно использовать вместо расширения !process , чтобы получить краткий обзор системы, особенно при отладке многопоточных проблем, таких как конфликты ресурсов или взаимоблокировки.

Расширение пользовательского режима !findstack также отображает сведения о конкретных стеках.

Ниже приведен пример простого отображения !stacks :

kd> !stacks 0
Proc.Thread  .Thread  ThreadState  Blocker
                                     [System]
   4.000050  827eea10  Blocked    +0xfe0343a5

                                     [smss.exe]

                                     [csrss.exe]
  b0.0000a8  82723b70  Blocked    ntoskrnl!_KiSystemService+0xc4
  b0.0000c8  82719620  Blocked    ntoskrnl!_KiSystemService+0xc4
  b0.0000d0  827d5d50  Blocked    ntoskrnl!_KiSystemService+0xc4
.....

Первый столбец показывает идентификатор процесса и идентификатор потока (разделенный на период).

Второй столбец — текущий адрес блока ETHREAD потока.

Третий столбец показывает состояние потока (инициализировано, готово, выполняется, резервная, завершенная, переходная или заблокированная).

Четвертый столбец показывает верхний адрес в стеке потока.

Ниже приведены примеры более подробных выходных данных !stacks :

kd> !stacks 1
Proc.Thread  .Thread  ThreadState  Blocker
                                     [System]
   4.000008  827d0030  Blocked    ntoskrnl!MmZeroPageThread+0x66
   4.000010  827d0430  Blocked    ntoskrnl!ExpWorkerThread+0x189
   4.000014  827cf030  Blocked    Stack paged out
   4.000018  827cfda0  Blocked    Stack paged out
   4.00001c  827cfb10  Blocked    ntoskrnl!ExpWorkerThread+0x189
.....
                                     [smss.exe]
  9c.000098  82738310  Blocked    Stack paged out
  9c.0000a0  826a5190  Blocked    Stack paged out
  9c.0000a4  82739d30  Blocked    Stack paged out

                                     [csrss.exe]
  b0.0000bc  826d0030  Blocked    Stack paged out
  b0.0000b4  826c9030  Blocked    Stack paged out
  b0.0000a8  82723b70  Blocked    ntoskrnl!_KiSystemService+0xc4
.....

kd> !stacks 2
Proc.Thread  .Thread  ThreadState  Blocker
                                     [System]
   4.000008  827d0030  Blocked    ntoskrnl!KiSwapThread+0xc5
                                  ntoskrnl!KeWaitForMultipleObjects+0x2b4
                                  ntoskrnl!MmZeroPageThread+0x66
                                  ntoskrnl!Phase1Initialization+0xd82
                                  ntoskrnl!PspSystemThreadStartup+0x4d
                                  ntoskrnl!CreateSystemRootLink+0x3d8
                                  +0x3f3f3f3f
   4.000010  827d0430  Blocked    ntoskrnl!KiSwapThread+0xc5
                                  ntoskrnl!KeRemoveQueue+0x191
.....