Condividi tramite


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