!線
!thread 延伸模組會顯示目標系統上線程的相關摘要資訊,包括ETHREAD 區塊。 此命令只能在內核模式偵錯期間使用。
此延伸模組命令與 .thread (Set Register Context) 命令不同。
語法
!thread [-p] [-t] [Address [Flags]]
參數
-p
顯示擁有線程之進程的摘要資訊。
-t
包含此選項時, Address 是線程標識碼,而不是線程位址。
位址
指定目標計算機上線程的十六進位位址。 如果 Address 為 -1 或省略,表示目前的線程。
標誌
指定要顯示的詳細數據層級。 旗標 可以是下列位的任何組合。 如果 Flags 為 0,則只會顯示最少的資訊量。 預設值為0x6:
位 1 (0x2)
顯示線程的等候狀態。
位 2 (0x4)
如果這個位不使用 Bit 1 (0x2),則不會有任何作用。 如果此位與位 1 搭配使用,線程就會以堆疊追蹤顯示。
位 3 (0x8)
將傳回位址、堆疊指標和 (在 Itanium 系統上) bsp 快取器值新增至每個函式顯示的資訊,並隱藏函式自變數的顯示。
位 4 (0x10)
設定進程內容,等於在此命令期間擁有指定線程的進程。 這會導致更精確的線程堆疊顯示。
DLL
Kdexts.dll
其他資訊
如需核心模式中線程的相關信息,請參閱 變更內容 及 控制進程和線程。 如需分析進程和線程的詳細資訊,請參閱 Mark Russinovich、Alex Ionescu 和 David 所羅門Microsoft Windows 內部。
備註
以下是使用 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
使用 !process 之類的命令,找出您感興趣的線程位址或線程標識符。
下表說明 !thread display 中的實用資訊。
參數 | 意義 |
---|---|
線程位址 |
THREAD 一字之後的十六進位數位是ETHREAD區塊的位址。 在上述範例中,線程位址0xffffcb088f0a4480 。 |
執行緒 ID |
Cid 字後面的兩個十六進位數位是進程標識碼和線程標識碼:進程標識碼.thread標識符。 在上述範例中,進程標識碼是0x0e34,而線程標識碼0x3814。 |
線程環境區塊 (TEB) |
Teb 一字之後的十六進位數位是線程環境區塊 (TEB) 的位址。 |
Win32Thread |
Win32Thread 字 後面的十六進位數位是 Win32Thread 的位址。 |
執行緒狀態 |
線程狀態會顯示在以 RUNNING 一字開頭的行尾。 |
擁有程式 |
擁有進程字組後面的十六進位數位是擁有此線程之進程的 EPROCESS 位址。 |
起始位址 |
[開始位址] 字組後面的十六進位數位是線程開始位址。 這可能以符號形式出現。 |
用戶線程函式 |
Win32 Start Address 字 後面的十六進位數位是用戶線程函式的位址 。 |
優先順序 |
線程的優先順序資訊會遵循 Priority 一字。 |
堆疊追蹤 |
線程的堆疊追蹤會出現在此顯示結束時。 |