k、kb、kc、kd、kp、kP、kv (スタック バックトレースの表示)
k* コマンドは、指定されたスレッドのスタック フレームと関連情報を表示します。
ユーザー モード、x86 プロセッサ
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] [FrameCount]
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] = BasePtr [FrameCount]
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] = BasePtr StackPtr InstructionPtr
[~Thread] kd [WordCount]
カーネル モード、x86 プロセッサ
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] [FrameCount]
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr FrameCount
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] = BasePtr StackPtr InstructionPtr
[Processor] kd [WordCount]
ユーザー モード、x64 プロセッサ
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] [FrameCount]
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr FrameCount
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr InstructionPtr FrameCount
[~Thread] kd [WordCount]
カーネル モード、x64 プロセッサ
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] [FrameCount]
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr FrameCount
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr InstructionPtr FrameCount
[Processor] kd [WordCount]
ユーザー モード、ARM プロセッサ
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] [FrameCount]
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr FrameCount
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr InstructionPtr FrameCount
[~Thread] kd [WordCount]
カーネル モード、ARM プロセッサ
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] [FrameCount]
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr FrameCount
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr InstructionPtr FrameCount
[Processor] kd [WordCount]
パラメーター
スレッド
表示するスレッド スタックを指定します。 このパラメーターを省略すると、現在のスレッドのスタックが表示されます。 スレッド構文の詳細については、「 スレッド構文」を参照してください。 スレッドはユーザー モードでのみ指定できます。
プロセッサ
スタックを表示するプロセッサを指定します。 プロセッサ構文の詳細については、「 マルチプロセッサ構文」を参照してください。
b
スタック トレース内の各関数に渡される最初の 3 つのパラメーターを表示します。
c
クリーン スタック トレースを表示します。 各表示行には、モジュール名と関数名のみが含まれます。
p
スタック トレースで呼び出される各関数のすべてのパラメーターを表示します。 パラメーター リストには、各パラメーターのデータ型、名前、および値が含まれます。 オプションでは大文字と p
小文字が区別されます。 このパラメーターには、完全なシンボル情報が必要です。
P
パラメーターと同様に、スタック トレースで呼び出される各関数のすべてのパラメーターを p
表示します。 ただし、 の場合 P
、関数パラメーターは、残りのデータと同じ行ではなく、ディスプレイの 2 行目に出力されます。
v
フレーム ポインター省略 (FPO) 情報を表示します。 x86 ベースのプロセッサでは、ディスプレイには呼び出し規約情報も含まれます。
n
フレーム番号を表示します。
f
隣接するフレーム間の距離を表示します。 この距離は、実際のスタック上のフレームを区切るバイト数です。
L
表示のソース行を非表示にします。 L
の大文字と小文字は区別されます。
M
デバッガー マークアップ言語を使用して出力を表示します。 ディスプレイの各フレーム番号は、ローカル コンテキストを設定し、ローカル変数を表示するために選択できるリンクです。 ローカル コンテキストの詳細については、「 .frame」を参照してください。
FrameCount
表示するスタック フレームの数を指定します。 n (数値ベースの設定) コマンドを使用して基数を変更しない限り、この数値を 16 進数形式で指定する必要があります。 .kframes (スタック長の設定) コマンドを使用して既定値を変更していない限り、既定値は 20 (0x14) です。
BasePtr
スタック トレースのベース ポインターを指定します。 パラメーターは BasePtr
、コマンドの後に等号 (=) がある場合にのみ使用できます。
StackPtr
スタック トレースのスタック ポインターを指定します。 と InstructionPtr
を省略StackPtr
した場合、コマンドは rsp (または esp) レジスタが指定するスタック ポインターと、rip (または eip) レジスタが指定する命令ポインターを使用します。
InstructionPtr
スタック トレースの命令ポインターを指定します。 と InstructionPtr
を省略StackPtr
した場合、コマンドは rsp (または esp) レジスタが指定するスタック ポインターと、rip (または eip) レジスタが指定する命令ポインターを使用します。
WordCount
ダンプするスタック内のDWORD_PTR値の数を指定します。 .kframes (スタック長の設定) コマンドを使用して既定値を変更しない限り、既定値は 20 (0x14) です。
環境 | |
---|---|
モード | ユーザー モード、カーネル モード |
Targets | ライブ、クラッシュ ダンプ |
プラットフォーム | All |
解説
、kb
、、kp
kP
または kv
コマンドをk
発行すると、スタック トレースが表形式で表示されます。 行の読み込みが有効になっている場合は、ソース モジュールと行番号も表示されます。
スタック トレースには、スタック フレームのベース ポインター、リターン アドレス、および関数名が含まれます。
または kP
コマンドをkp
使用すると、スタック トレースで呼び出される各関数の完全なパラメーターが表示されます。 パラメーター リストには、各パラメーターのデータ型、名前、および値が含まれます。
コマンドが遅い可能性があります。 たとえば、 を呼び出すとき MyFunction1
、デバッガーには、この呼び出 MyFunction2
しで渡されるパラメーターを表示するための完全なシンボル情報 MyFunction1
が必要です。 このコマンドは、パブリック シンボルで公開されていない内部の Microsoft Windows ルーチンを完全には表示しません。
または kv
コマンドをkb
使用すると、各関数に渡される最初の 3 つのパラメーターが表示されます。 コマンドを kv
使用すると、FPO データも表示されます。
x86 ベースのプロセッサでは、 コマンドは kv
呼び出し規約情報も表示します。
コマンドを kv
使用すると、FPO 情報は次の形式で行の末尾に追加されます。
FPO テキスト | 説明 |
---|---|
FPO: [非 Fpo] | フレームの FPO データはありません。 |
FPO: [N1,N2,N3] | N1 はパラメーターの合計数です。 N2 は、ローカル変数の DWORD 値の数です。 N3 は、保存されるレジスタの数です。 |
FPO: [N1,N2] TrapFrame @ Address | N1 はパラメーターの合計数です。 N2 は、ローカルの DWORD 値の数です。 Address はトラップ フレームのアドレスです。 |
FPO: TaskGate Segment:0 | セグメント は、タスク ゲートのセグメント セレクターです。 |
FPO: [EBP 0xBase] | Base は、フレームのベース ポインターです。 |
このコマンドは kd
、生のスタック データを表示します。 各 DWORD 値は、個別の行に表示されます。 これらの行のシンボル情報は、関連するシンボルと共に表示されます。 この形式では、他 k*
のコマンドよりも詳細なリストが作成されます。 コマンドは kd
、スタック アドレスをパラメーターとして使用する dds (表示メモリ) コマンドと同じです。
関数の先頭 (関数プロローグが実行される前) に コマンドを使用 k
すると、正しくない結果が表示されます。 デバッガーはフレーム レジスタを使用して現在のバックトレースを計算します。このレジスタは、プロローグが実行されるまで関数に対して正しく設定されません。
ユーザー モードでは、スタック トレースは現在のスレッドのスタックに基づいています。 スレッドの詳細については、「 プロセスとスレッドの制御」を参照してください。
カーネル モードでは、スタック トレースは現在の レジスタ コンテキストに基づいています。 特定のスレッド、コンテキスト レコード、またはトラップ フレームに一致するようにレジスタ コンテキストを設定できます。
関連情報
[コンテキストの登録] およびその他のコンテキスト設定の詳細については、「 コンテキストの変更」を参照してください。