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
顯示傳遞至堆疊追蹤中每個函式的前三個參數。
c
顯示全新的堆疊追蹤。 每個顯示行只包含模組名稱和函式名稱。
p
顯示堆疊追蹤中呼叫的每個函式的所有參數。 參數清單包含每個參數的資料類型、名稱和值。 此選項 p
區分大小寫。 此參數需要完整的符號資訊。
P
顯示堆疊追蹤中呼叫的每個函式的所有參數,例如 p
參數。 不過,對於 P
,函式參數會列印在顯示器的第二行,而不是在與其餘數據相同的行上列印。
v
顯示框架指標省略 (FPO) 資訊。 在以 x86 為基礎的處理器上,顯示器也包含呼叫慣例資訊。
n
顯示框架編號。
f
顯示相鄰畫面格之間的距離。 此距離是分隔實際堆疊上框架的位元組數目。
L
隱藏顯示中的來源行。 L
區分大小寫。
M
使用 偵錯工具標記語言顯示輸出。 顯示中的每個畫面編號都是一個連結,您可以選取以設定區域內容並顯示區域變數。 如需本機內容的相關資訊,請參閱 .frame。
FrameCount
指定要顯示的堆疊框架數目。 除非您已使用 n (set number base) 命令,以十六進位格式指定此數位。 使用 .kframes (設定堆疊長度) 命令來顯示預設值並變更值。
BasePtr
指定堆疊追蹤的基底指標。 BasePtr
只有在命令之後有等號 (=) 時,才能使用 參數。
StackPtr
指定堆疊追蹤的堆疊指標。 如果您省略 StackPtr
和 InstructionPtr
,此命令會使用 rsp (或 esp) register 指定的堆疊指標,以及 (或 eip) 暫存器指定的指令指標。
InstructionPtr
指定堆疊追蹤的指令指標。 如果您省略 StackPtr
和 InstructionPtr
,此命令會使用 rsp (或 esp) register 指定的堆疊指標,以及 (或 eip) 暫存器指定的指令指標。
WordCount
指定要傾印的堆疊中DWORD_PTR值數目。
環境 | |
---|---|
模式 | 使用者模式、核心模式 |
目標 | 即時、損毀傾印 |
平台 | 全部 |
備註
當您發出 k
、 kb
、 kp
、 kP
或 kv
命令時,堆疊追蹤會以表格式格式顯示。 如果啟用行載入,也會顯示來源模組和行號。
堆疊追蹤包含堆疊框架的基底指標、傳回位址和函式名稱。
如果您使用 kp
或 kP
命令,則會顯示堆疊追蹤中呼叫的每個函式的完整參數。 參數清單包含每個參數的資料類型、名稱和值。
命令可能很慢。 例如,呼叫 MyFunction2
時 MyFunction1
,偵錯工具必須有完整的符號資訊 MyFunction1
,才能顯示在此呼叫中傳遞的參數。 此命令不會完全顯示未公開在公用符號中的內部 Microsoft Windows 常式。
如果您使用 kb
或 kv
命令,則會顯示傳遞至每個函式的前三個參數。 如果您使用 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 值數目。 位址 是陷阱框架的位址。 |
FPO:TaskGate 區段:0 | 區段 是工作閘道的區段選取器。 |
FPO:[EBP 0xBase] | Base 是框架的基底指標。 |
此命令 kd
會顯示原始堆疊資料。 每個 DWORD 值都會顯示在個別行上。 符號資訊會與相關聯的符號一起顯示。 此格式會建立比其他 k*
命令更詳細的清單。 kd
此命令相當於dds (顯示記憶體) 命令,該命令會使用堆疊位址作為其參數。
如果您在函式程式執行) 之前,在 k
函式開頭使用 命令 (,您會收到不正確的結果。 偵錯工具會使用框架暫存器來計算目前的回溯,而且在函式執行前,此暫存器不會正確設定。
在使用者模式中,堆疊追蹤是以目前線程的堆疊為基礎。 如需執行緒的詳細資訊,請參閱 控制進程和執行緒。
在核心模式中,堆疊追蹤是以目前的 暫存器內容為基礎。 您可以設定暫存器內容,以符合特定的執行緒、內容記錄或陷阱框架。
其他資訊
如需註冊內容和其他內容設定的詳細資訊,請參閱 變更內容。