!stacks

L’extension !stacks affiche des informations sur les piles du noyau.

Syntaxe

!stacks [Detail [FilterString]] 

Paramètres

Détails
Spécifie le niveau de détail à utiliser dans l’affichage. Le tableau suivant répertorie les valeurs valides pour Details.

0

Affiche un résumé des piles actuelles du noyau. Il s’agit de la valeur par défaut.

1

Affiche les piles qui sont actuellement paginées, ainsi que les piles actuelles du noyau.

2

Affiche les paramètres complets de toutes les piles, ainsi que les piles actuellement paginées et les piles actuelles du noyau.

FilterString
Affiche uniquement les threads qui contiennent la sous-chaîne spécifiée dans un symbole.

DLL

Kdexts.dll

Informations supplémentaires

Pour plus d’informations sur les piles du noyau, veuillez consulter Microsoft Windows Internals (Au cœur de Windows), de Mark Russinovich et David Solomon.

Notes

L’extension !stacks donne un bref résumé de l’état de chaque thread. Vous pouvez utiliser cette extension à la place de l'extension !process pour obtenir une vue d’ensemble rapide du système, en particulier lors du débogage de problèmes multithreads tels que des conflits de ressources ou des blocages.

L’extension !findstack en mode utilisateur affiche également des informations sur des piles particulières.

Voici un exemple de l'affichage le plus simple 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
.....

La première colonne affiche l’ID de processus et l’ID de thread (séparés par un point).

La deuxième colonne affiche l’adresse actuelle du bloc ETHREAD du thread.

La troisième colonne affiche l’état du thread (initialisé, prêt, en cours d’exécution, en attente, arrêté, transition ou bloqué).

La quatrième colonne affiche l’adresse supérieure de la pile du thread.

Voici des exemples de sortie !stacks plus détaillées :

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