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 (スタック長の設定) コマンドを使用して、既定値を表示し、値を変更します。

BasePtr
スタック トレースのベース ポインターを指定します。 この BasePtr パラメーターは、コマンドの後に等号 (=) がある場合にのみ使用できます。

StackPtr
スタック トレースのスタック ポインタを指定します。 StackPtr 、および InstructionPtrを省略した場合、rsp (または esp) レジスタで指定されたスタック ポインターと、rip (または eip) レジスタで指定された命令ポインターが使用されます。

InstructionPtr
スタック トレースの命令ポインターを指定します。 StackPtr 、および InstructionPtrを省略した場合、rsp (または esp) レジスタで指定されたスタック ポインターと、rip (または eip) レジスタで指定された命令ポインターが使用されます。

ワードカウント
ダンプするスタック内の DWORD_PTR 値の数を指定します。

環境  
モード ユーザー モード、カーネル モード
目標値 ライブ、クラッシュ ダンプ
プラットフォーム すべて

解説

kkbkpkP、または kv コマンドを発行すると、スタック トレースが表形式で表示されます。 行の読み込みが有効になっている場合は、ソース モジュールと行番号も表示されます。

スタック トレースには、スタック フレームのベース ポインター、戻りアドレス、および関数名が含まれます。

kpまたはkP コマンドを使用すると、スタック トレースで呼び出される各関数の完全なパラメーターが表示されます。 パラメーター リストには、各パラメーターのデータ型、名前、および値が含まれます。

コマンドが遅い可能性があります。 たとえば、 MyFunction1MyFunction2 を呼び出す場合、デバッガーはこの呼び出しで渡されるパラメーターを表示するために MyFunction1 の完全なシンボル情報を持っている必要があります。 このコマンドは、パブリック シンボルで公開されていない内部の Microsoft Windows ルーチンを完全には表示しません。

kb または kv コマンドを使用すると、各関数に渡される最初の 3 つのパラメーターが表示されます。 kv コマンドを使用すると、FPO データも表示されます。

x86 ベースのプロセッサでは、このkv コマンドは 呼び出し規則の情報も表示します。

kv コマンドを使用すると、FPO 情報が次の形式で行の末尾に追加されます。

FPO text 意味
FPO: [non-Fpo] フレームの FPO データがありません。
FPO: [N1,N2,N3] N1 はパラメーターの総数です。

N2 は、ローカル変数の DWORD 値の数です。

N3 は、保存されるレジスタの数です。
FPO: [N1,N2] TrapFrame @ Address N1 はパラメーターの総数です。

N2 は、ローカルの DWORD 値の数です。

アドレス はトラップ フレームのアドレスです。
FPO: TaskGate Segment:0 セグメント は、タスク ゲートのセグメント セレクターです。
FPO: [EBP 0xBase] ベース はフレームのベース ポインターです。

このkd コマンドは、生のスタック データを表示します。 各 DWORD 値は、個別の行に表示されます。 これらの行のシンボル情報が、関連するシンボルと共に表示されます。 この形式では、他の k* のコマンドよりも詳細なリストが作成されます。 この kd コマンドは、スタック アドレスを パラメーターとして使用する dds (ディスプレイ メモリ) コマンドと同じです。

関数の先頭 (関数プロローグが実行される前) にkコマンドを使用すると、正しくない結果が表示されます。 デバッガーはフレーム レジスタを使用して現在のバックトレースを計算します。このレジスタは、プロローグが実行されるまで関数に対して正しく設定されません。

ユーザー モードでは、スタック トレースは現在のスレッドのスタックに基づいています。 スレッドの詳細については、「 プロセスとスレッドの制御」を参照してください。

カーネル モードでは、スタック トレースは現在の レジスタ コンテキスト に基づきます。 特定のスレッド、コンテキスト レコード、またはトラップ フレームに一致するようにレジスタ コンテキストを設定できます。

追加情報

レジスタ コンテキストおよびその他のコンテキスト設定の詳細については、「コンテキストを変更」を参照してください。