!filo
L'estensione !thread visualizza informazioni di riepilogo su un thread nel sistema di destinazione, incluso il blocco ETHREAD. Questo comando può essere usato solo durante il debug in modalità kernel.
Questo comando di estensione non è uguale al comando .thread (Set Register Context).
Sintassi
!thread [-p] [-t] [Address [Flags]]
Parametri
-p
Visualizza informazioni di riepilogo sul processo proprietario del thread.
-t
Quando questa opzione è inclusa, Address è l'ID del thread, non l'indirizzo del thread.
Indirizzo
Specifica l'indirizzo esadecimale del thread nel computer di destinazione. Se Address è -1 o omesso, indica il thread corrente.
Bandiere
Specifica il livello di dettaglio da visualizzare. I flag possono essere qualsiasi combinazione dei bit seguenti. Se Flags è 0, viene visualizzata solo una quantità minima di informazioni. Il valore predefinito è 0x6:
Bit 1 (0x2)
Visualizza gli stati di attesa del thread.
Bit 2 (0x4)
Se questo bit viene usato senza Bit 1 (0x2), non ha alcun effetto. Se questo bit viene usato con Bit 1, il thread viene visualizzato con un'analisi dello stack.
Bit 3 (0x8)
Aggiunge l'indirizzo restituito, il puntatore dello stack e (nei sistemi Itanium) il valore del registro bsp alle informazioni visualizzate per ogni funzione e elimina la visualizzazione degli argomenti della funzione.
Bit 4 (0x10)
Imposta il contesto del processo uguale al processo proprietario del thread specificato per la durata di questo comando. Ciò comporta una visualizzazione più accurata degli stack di thread.
DLL
Kdexts.dll
Informazioni aggiuntive
Per informazioni sui thread in modalità kernel, vedere Modifica dei contesti e controllo di processi e thread. Per altre informazioni sull'analisi di processi e thread, vedere Microsoft Windows Internals, di Mark Russinovich, Alex Ionribu e David Solomon.
Osservazioni:
Ecco un esempio di uso di Windows 10:
0: kd> !thread 0xffffcb088f0a4480
THREAD ffffcb088f0a4480 Cid 0e34.3814 Teb: 0000001a27ca6000 Win32Thread: 0000000000000000 RUNNING on processor 0
Not impersonating
DeviceMap ffffb80842016c20
Owning Process ffffcb08905397c0 Image: MsMpEng.exe
Attached Process N/A Image: N/A
Wait Start TickCount 182835891 Ticks: 0
Context Switch Count 5989 IdealProcessor: 3
UserTime 00:00:01.046
KernelTime 00:00:00.296
Win32 Start Address 0x00007ffb3b2fd1b0
Stack Init ffff95818476add0 Current ffff958184769d30
Base ffff95818476b000 Limit ffff958184765000 Call 0000000000000000
Priority 8 BasePriority 8 PriorityDecrement 0 IoPriority 2 PagePriority 5
Child-SP RetAddr : Args to Child : Call Site
fffff802`59858c68 fffff801`b56d24aa : ffffcb08`8fd68010 00000000`00000000 fffff802`58259600 00000000`00000008 : nt!DbgBreakPointWithStatus [d:\rs2\minkernel\ntos\rtl\amd64\debugstb.asm @ 130]
fffff802`59858c70 ffffcb08`8fd68010 : 00000000`00000000 fffff802`58259600 00000000`00000008 ffffcb08`8f0a4400 : 0xfffff801`b56d24aa
fffff802`59858c78 00000000`00000000 : fffff802`58259600 00000000`00000008 ffffcb08`8f0a4400 00000000`00000019 : 0xffffcb08`8fd68010
Usare comandi come !process per individuare l'indirizzo o l'ID thread del thread a cui si è interessati.
Le informazioni utili nella visualizzazione del thread !sono illustrate nella tabella seguente.
Parametro | Significato |
---|---|
Indirizzo thread |
Numero esadecimale dopo la parola THREAD è l'indirizzo del blocco ETHREAD. Nell'esempio precedente l'indirizzo del thread è 0xffffcb088f0a4480 . |
ID thread |
I due numeri esadecimali dopo la parola Cid sono l'ID processo e l'ID del thread: ID processo ID.thread. Nell'esempio precedente l'ID processo è 0x0e34 e l'ID del thread è 0x3814. |
Blocco dell'ambiente thread (TEB) |
Numero esadecimale dopo la parola Teb è l'indirizzo del blocco di ambiente thread (TEB). |
Win32Thread |
Il numero esadecimale dopo la parola Win32Thread è l'indirizzo di Win32Thread. |
Stato thread |
Lo stato del thread viene visualizzato alla fine della riga che inizia con la parola RUNNING. |
Processo proprietario |
Il numero esadecimale dopo le parole Owning Process è l'indirizzo dell'EPROCESS per il processo proprietario di questo thread. |
Indirizzo iniziale |
Il numero esadecimale dopo le parole Indirizzo iniziale è l'indirizzo iniziale del thread. Questo potrebbe essere visualizzato in forma simbolica. |
Funzione thread utente |
Il numero esadecimale dopo le parole Indirizzo iniziale Win32 è l'indirizzo della funzione thread utente. |
Priorità |
Le informazioni sulla priorità per il thread seguono la parola Priorità. |
Analisi dello stack |
Alla fine di questa visualizzazione viene visualizzata una traccia dello stack per il thread. |