Compartilhar via


!stacks

A extensão !stacks exibe informações sobre as pilhas do kernel.

Sintaxe

!stacks [Detail [FilterString]] 

Parâmetros

Detalhe
Especifica o nível de detalhes a ser usado na exibição. A tabela a seguir lista os valores válidos para Detalhe.

0

Exibe um resumo das pilhas de kernel atuais. Este é o valor padrão.

1

Exibe pilhas que foram retiradas da página no momento, bem como as pilhas de kernel atuais.

2

Exibe os parâmetros completos para todas as pilhas, bem como as pilhas retiradas da página atualmente e as pilhas de kernel atuais.

FilterString
Exibe somente threads que contêm a subcadeia de caracteres especificada em um símbolo.

DLL

Kdexts.dll

Informações Adicionais

Para obter informações sobre pilhas de kernel, consulte Microsoft Windows Internals, de Mark Russinovich e David Solomon.

Comentários

A extensão !stacks fornece um breve resumo do estado de cada thread. Você pode usar essa extensão em vez da extensão !process para obter uma visão geral rápida do sistema, especialmente ao depurar problemas multithread, como conflitos de recursos ou deadlocks.

A extensão de modo de usuário !findstack também exibe informações sobre pilhas específicas.

Aqui está um exemplo da exibição mais simples de !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
.....

A primeira coluna mostra a ID do processo e a ID do thread (separadas por um ponto).

A segunda coluna é o endereço atual do bloco ETHREAD do thread.

A terceira coluna mostra o estado do thread (inicializado, pronto, em execução, em espera, encerrado, em transição ou bloqueado).

A quarta coluna mostra o endereço superior na pilha do thread.

Aqui estão exemplos de saída mais detalhada de !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
.....