!Pile

L'estensione !stacks visualizza informazioni sugli stack del kernel.

Sintassi

!stacks [Detail [FilterString]] 

Parametri

Dettaglio
Specifica il livello di dettaglio da utilizzare nella visualizzazione. Nella tabella seguente sono elencati i valori validi per Detail.

0

Visualizza un riepilogo degli stack del kernel correnti. Questo è il valore predefinito.

1

Visualizza gli stack attualmente visualizzati, nonché gli stack del kernel correnti.

2

Visualizza i parametri completi per tutti gli stack, nonché gli stack attualmente visualizzati e gli stack del kernel correnti.

FilterString
Visualizza solo i thread che contengono la sottostringa specificata in un simbolo.

DLL

Kdexts.dll

Informazioni aggiuntive

Per informazioni sugli stack di kernel, vedere Microsoft Windows Internals, di Mark Russinovich e David Solomon.

Osservazioni:

L'estensione !stacks fornisce un breve riepilogo dello stato di ogni thread. È possibile usare questa estensione anziché l'estensione !process per ottenere una rapida panoramica del sistema, soprattutto quando si esegue il debug di problemi multithread, ad esempio conflitti di risorse o deadlock.

L'estensione !findstack in modalità utente visualizza anche informazioni su specifici stack.

Di seguito è riportato un esempio della visualizzazione !stack più semplice:

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
.....

La prima colonna mostra l'ID del processo e l'ID del thread (separati da un punto).

La seconda colonna è l'indirizzo corrente del blocco ETHREAD del thread.

La terza colonna mostra lo stato del thread (inizializzato, pronto, in esecuzione, standby, terminato, transizione o bloccato).

La quarta colonna mostra l'indirizzo superiore nello stack del thread.

Di seguito sono riportati esempi di output !stacks più dettagliati:

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
.....