k, kb, kc, kd, kp, kP, kv (Display Stack Backtrace)
I comandi k* visualizzano il frame dello stack del thread specificato con informazioni correlate.
Modalità utente, processore 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]
Modalità kernel, processore 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]
Modalità utente, processore 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]
Modalità kernel, processore 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]
Modalità utente, processore 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]
Modalità kernel, processore 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]
Parametri
Thread
Specifica lo stack di thread da visualizzare. Se si omette questo parametro, viene visualizzato lo stack del thread corrente. Per altre informazioni sulla sintassi del thread, vedere Sintassi thread. È possibile specificare thread solo in modalità utente.
Processore
Specifica il processore il cui stack deve essere visualizzato. Per altre informazioni sulla sintassi del processore, vedere Sintassi multiprocessore.
b
Visualizza i primi tre parametri passati a ogni funzione nella traccia dello stack.
c
Visualizza una traccia dello stack pulito. Ogni riga di visualizzazione include solo il nome del modulo e il nome della funzione.
p
Visualizza tutti i parametri per ogni funzione chiamata nella traccia dello stack. L'elenco dei parametri include il tipo di dati, il nome e il valore di ogni parametro. L'opzione p
è distinzione tra maiuscole e minuscole. Questo parametro richiede informazioni sul simbolo complete.
P
Visualizza tutti i parametri per ogni funzione chiamata nella traccia dello stack, ad esempio il p
parametro . Tuttavia, per P
, i parametri della funzione vengono stampati su una seconda riga della visualizzazione, anziché sulla stessa riga del resto dei dati.
v
Visualizza le informazioni sull'omissione del puntatore del fotogramma (FPO). Nei processori basati su x86, la visualizzazione include anche le informazioni sulla convenzione di chiamata.
n
Visualizza i numeri di cornice.
f
Visualizza la distanza tra fotogrammi adiacenti. Questa distanza è il numero di byte che separano i frame nello stack effettivo.
L
Nasconde le righe di origine nella visualizzazione. L
applica la distinzione maiuscole/minuscole.
M
Visualizza l'output usando il linguaggio di markup debugger. Ogni numero di frame nella visualizzazione è un collegamento che è possibile selezionare per impostare il contesto locale e visualizzare le variabili locali. Per informazioni sul contesto locale, vedere .frame.
FrameCount
Specifica il numero di fotogrammi dello stack da visualizzare. È necessario specificare questo numero in formato esadecimale a meno che non sia stato modificato il radix usando il comando n (set number base). Usare il comando .kframes (set stack length) per visualizzare il valore predefinito e per modificare il valore.
BasePtr
Specifica il puntatore di base per la traccia dello stack. Il BasePtr
parametro è disponibile solo se è presente un segno di uguale (=) dopo il comando.
StackPtr
Specifica il puntatore dello stack per la traccia dello stack. Se si omette StackPtr
e InstructionPtr
, il comando usa il puntatore dello stack specificato dal registro rsp (o esp) e il puntatore alle istruzioni specificato dal registro rip (o eip).
IstruzionePtr
Specifica il puntatore alle istruzioni per la traccia dello stack. Se si omette StackPtr
e InstructionPtr
, il comando usa il puntatore dello stack specificato dal registro rsp (o esp) e il puntatore alle istruzioni specificato dal registro rip (o eip).
WordCount
Specifica il numero di valori DWORD_PTR nello stack da dump.
Ambiente | |
---|---|
Modalità | Modalità utente, modalità kernel |
Targets | Dump live, arresto anomalo |
Piattaforme | Tutti |
Commenti
Quando si esegue il k
comando , , kb
kp
, kP
o kv
, viene visualizzata una traccia dello stack in un formato tabulare. Se il caricamento della riga è abilitato, vengono visualizzati anche i moduli di origine e i numeri di riga.
La traccia dello stack include il puntatore di base per il frame dello stack, l'indirizzo restituito e i nomi delle funzioni.
Se si usano i kp
comandi o kP
, vengono visualizzati i parametri completi per ogni funzione chiamata nella traccia dello stack. L'elenco dei parametri include il tipo di dati, il nome e il valore di ogni parametro.
Il comando potrebbe essere lento. Ad esempio, quando MyFunction1
chiama MyFunction2
, il debugger deve avere informazioni sul simbolo completo per MyFunction1
visualizzare i parametri passati in questa chiamata. Questo comando non visualizza completamente le routine interne di Microsoft Windows che non sono esposte nei simboli pubblici.
Se si usano i kb
comandi o kv
, vengono visualizzati i primi tre parametri passati a ogni funzione. Se si usa il kv
comando, vengono visualizzati anche i dati FPO.
In un processore basato su x86, il kv
comando visualizza anche le informazioni sulla convenzione chiamante.
Quando si usa il kv
comando, le informazioni FPO vengono aggiunte alla fine della riga nel formato seguente.
Testo FPO | Significato |
---|---|
FPO: [non-Fpo] | Nessun dato FPO per il frame. |
FPO: [N1,N2,N3] | N1 è il numero totale di parametri. N2 è il numero di valori DWORD per le variabili locali. N3 è il numero di registri salvati. |
FPO: [N1,N2] TrapFrame @ Indirizzo | N1 è il numero totale di parametri. N2 è il numero di valori DWORD per i locali. L'indirizzo è l'indirizzo del frame trap. |
FPO: TaskGate Segment:0 | Segmento è il selettore segmento per il gate dell'attività. |
FPO: [EBP 0xBase] | La base è il puntatore di base per il frame. |
Il kd
comando visualizza i dati dello stack non elaborato. Ogni valore DWORD viene visualizzato in una riga separata. Le informazioni sui simboli vengono visualizzate per tali linee insieme ai simboli associati. Questo formato crea un elenco più dettagliato rispetto agli altri k*
comandi. Il kd
comando equivale a un comando dds (memoria di visualizzazione) che usa l'indirizzo dello stack come parametro.
Se si usa il k
comando all'inizio di una funzione (prima dell'esecuzione del prologo della funzione), si ricevono risultati non corretti. Il debugger usa il registro frame per calcolare il backtrace corrente e questo registro non viene impostato correttamente per una funzione fino a quando non viene eseguito il relativo prologo.
In modalità utente, l'analisi dello stack si basa sullo stack del thread corrente. Per altre informazioni sui thread, vedere Controllo di processi e thread.
In modalità kernel, l'analisi dello stack è basata sul contesto del registro corrente. È possibile impostare il contesto di registrazione in modo che corrisponda a un thread, un record di contesto o un frame trap specifico.
Informazioni aggiuntive
Per altre informazioni sul contesto Register e altre impostazioni di contesto, vedere Modifica dei contesti.