!thread

!thread 拡張機能は 、ETHREAD ブロックを含む、ターゲット システム上のスレッドに関する概要情報を表示します。 このコマンドは、カーネル モードのデバッグ中にのみ使用できます。

この拡張コマンドは 、.thread (Set Register Context) コマンドと同じ ではありません。

構文

!thread [-p] [-t] [Address [Flags]]

パラメーター


スレッドを所有するプロセスに関する概要情報を表示します。


このオプションが含まれている場合 、Address はスレッド アドレスではなくスレッド ID です。


ターゲット コンピューター上のスレッドの 16 進数アドレスを指定します。 Address -1 または省略された場合は、現在のスレッドを示します。


表示する詳細レベルを指定します。 フラグ には、次のビットの任意の組み合わせを指定できます。 Flags 0 の場合は、最小限の情報しか表示されません。 既定値は次0x6。

ビット 1 (0x2)
スレッドの待機状態を表示します。

ビット 2 (0x4)
このビットがビット 1 (0x2) なしで使用されている場合、効果はありません。 このビットがビット 1 で使用されている場合、スレッドはスタック トレースと一緒に表示されます。

ビット 3 (0x8)
戻りアドレス、スタック ポインター、および (Itanium システムの場合) bsp レジスタ値を各関数に対して表示される情報に追加し、関数引数の表示を抑制します。

ビット 4 (0x10)
このコマンドの間、指定されたスレッドを所有するプロセスと同じプロセス コンテキストを設定します。 これにより、スレッド スタックをより正確に表示できます。

DLL

Kdexts.dll

追加情報

カーネル モードのスレッドの詳細については、「コンテキストの変更 および「プロセスとスレッド の制御」を参照してください。 プロセスとスレッドの分析の詳細については、「Microsoft Windows Internals」を参照してください。By Mark Russinovich、Alex Ionescu、David Solomon。

注釈

を使用した例を次に示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 のような コマンドを使用 して、目的のスレッドのアドレスまたはスレッド ID を見つける。

!thread の表示に 関する有用な 情報については、次の表で説明します。

パラメーター 意味

スレッド アドレス

THREAD という単語の後の 16 進数は、ETHREAD ブロックのアドレスです。 前の例では、スレッド アドレスは 0xffffcb088f0a4480。

スレッド ID

Cid という単語の後の 2 つの 16 進数は、プロセス ID とスレッド ID です。 プロセス ID.thread ID。 前の例では、プロセス ID は 0x0e34され、スレッド ID は0x3814。

スレッド環境ブロック (TEB)

単語 Teb の後の 16 進数は、スレッド環境ブロック (TEB) のアドレスです。

システム サービス ディスパッチ テーブル

Win32Thread という単語の後の 16進数は、システム サービス ディスパッチ テーブルのアドレスです。

スレッドの状態

スレッドの状態は、RUNNING という単語で始まる行の末尾に表示 されます

所有プロセス

Owning Process という単語の後の 16 進数は、このスレッドを所有するプロセスの EPROCESS のアドレスです。

開始アドレス

Start Address という単語の後 の 16 進数は、スレッドの開始アドレスです。 これはシンボリック形式で表示される場合があります。

ユーザー スレッド関数

Win32 開始アドレスという 単語の後の 16 進数は、ユーザー スレッド関数のアドレスです。

優先順位

スレッドの優先順位情報は、Priority という単語に 従います

スタック トレース

スレッドのスタック トレースは、この表示の最後に表示されます。