k, kb, kc, kd, kp, kP, kv (Display Stack Backtrace)
Os comandos k* exibem o quadro de pilha do thread fornecido com informações relacionadas.
Modo de usuário, processador 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]
Kernel-Mode, Processador 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]
Modo de usuário, processador 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]
Kernel-Mode, Processador 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]
Modo de usuário, processador 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]
Modo kernel, processador 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]
Parâmetros
Thread
Especifica a pilha de threads a ser exibida. Se você omitir esse parâmetro, a pilha do thread atual será exibida. Para obter mais informações sobre a sintaxe do thread, consulte Sintaxe de thread. Você pode especificar threads somente no modo de usuário.
Processador
Especifica o processador cuja pilha deve ser exibida. Para obter mais informações sobre a sintaxe do processador, consulte Sintaxe de vários processadores.
b
Exibe os três primeiros parâmetros que são passados para cada função no rastreamento de pilha.
c
Exibe um rastreamento de pilha limpo. Cada linha de exibição inclui apenas o nome do módulo e o nome da função.
p
Exibe todos os parâmetros para cada função chamada no rastreamento de pilha. A lista de parâmetros inclui o tipo de dados, o nome e o valor de cada parâmetro. A p
opção diferencia maiúsculas de minúsculas. Esse parâmetro requer informações de símbolo completas.
P
Exibe todos os parâmetros para cada função chamada no rastreamento de pilha, como o p
parâmetro . No entanto, para P
, os parâmetros de função são impressos em uma segunda linha da exibição, em vez de na mesma linha que o restante dos dados.
v
Exibe informações de FPO (omissão de ponteiro de quadro). Em processadores baseados em x86, a exibição também inclui informações de convenção de chamada.
n
Exibe números de quadro.
f
Exibe a distância entre quadros adjacentes. Essa distância é o número de bytes que separam os quadros na pilha real.
L
Oculta as linhas de origem na exibição. L
diferencia maiúsculas de minúsculas.
M
Exibe a saída usando a linguagem de marcação de depurador. Cada número de quadro na exibição é um link que você pode selecionar para definir o contexto local e exibir variáveis locais. Para obter informações sobre o contexto local, consulte .frame.
FrameCount
Especifica o número de quadros de pilha a serem exibidos. Você deve especificar esse número no formato hexadecimal, a menos que tenha alterado o radix usando o comando n (definir base numérica ). Use o comando .kframes (definir comprimento da pilha) para exibir o padrão e alterar o valor.
BasePtr
Especifica o ponteiro base para o rastreamento de pilha. O BasePtr
parâmetro estará disponível somente se houver um sinal de igual (=) após o comando .
StackPtr
Especifica o ponteiro de pilha para o rastreamento de pilha. Se você omitir StackPtr
e InstructionPtr
, o comando usará o ponteiro de pilha que o registro rsp (ou esp) especifica e o ponteiro de instrução que o registro rip (ou eip) especifica.
InstructionPtr
Especifica o ponteiro de instrução para o rastreamento de pilha. Se você omitir StackPtr
e InstructionPtr
, o comando usará o ponteiro de pilha que o registro rsp (ou esp) especifica e o ponteiro de instrução que o registro rip (ou eip) especifica.
Wordcount
Especifica o número de valores de DWORD_PTR na pilha a ser despejada.
Ambiente | |
---|---|
Modos | Modo de usuário, modo kernel |
Destinos | Ao vivo, despejo de memória |
Plataformas | Tudo |
Comentários
Quando você emite os k
comandos , kb
, kp
kP
, ou kv
, um rastreamento de pilha é exibido em um formato tabular. Se o carregamento de linha estiver habilitado, os módulos de origem e os números de linha também serão exibidos.
O rastreamento de pilha inclui o ponteiro base para o quadro de pilha, o endereço de retorno e os nomes de função.
Se você usar os kp
comandos ou kP
, os parâmetros completos para cada função chamada no rastreamento de pilha serão exibidos. A lista de parâmetros inclui o tipo de dados, o nome e o valor de cada parâmetro.
O comando pode ser lento. Por exemplo, quando MyFunction1
chama MyFunction2
, o depurador deve ter informações de símbolo completas para MyFunction1
exibir os parâmetros que são passados nessa chamada. Esse comando não exibe totalmente rotinas internas do Microsoft Windows que não são expostas em símbolos públicos.
Se você usar os kb
comandos ou kv
, os três primeiros parâmetros que são passados para cada função serão exibidos. Se você usar o comando , os kv
dados do FPO também serão exibidos.
Em um processador baseado em x86, o kv
comando também exibe informações de convenção de chamada.
Quando você usa o kv
comando , as informações do FPO são adicionadas no final da linha no formato a seguir.
Texto do FPO | Significado |
---|---|
FPO: [não Fpo] | Nenhum dado FPO para o quadro. |
FPO: [N1,N2,N3] | N1 é o número total de parâmetros. N2 é o número de valores DWORD para as variáveis locais. N3 é o número de registros salvos. |
FPO: [N1,N2] TrapFrame @ Endereço | N1 é o número total de parâmetros. N2 é o número de valores DWORD para os locais. Endereço é o endereço do quadro de interceptação. |
FPO: Segmento TaskGate:0 | Segment é o seletor de segmento para o portão de tarefa. |
FPO: [EBP 0xBase] | Base é o ponteiro base para o quadro. |
O kd
comando exibe os dados brutos da pilha. Cada valor DWORD é exibido em uma linha separada. As informações de símbolo são exibidas para essas linhas junto com símbolos associados. Esse formato cria uma lista mais detalhada do que os outros k*
comandos. O kd
comando é equivalente a um comando dds (memória de exibição) que usa o endereço de pilha como parâmetro.
Se você usar o k
comando no início de uma função (antes da execução do prólogo da função), receberá resultados incorretos. O depurador usa o registro de quadro para calcular o backtrace atual e esse registro não é definido corretamente para uma função até que seu prólogo tenha sido executado.
No modo de usuário, o rastreamento de pilha é baseado na pilha do thread atual. Para obter mais informações sobre threads, consulte Controlando processos e threads.
No modo kernel, o rastreamento de pilha é baseado no contexto de registro atual. Você pode definir o contexto de registro para corresponder a um thread, registro de contexto ou quadro de interceptação específico.
Informações adicionais
Para obter mais informações sobre o contexto registrar e outras configurações de contexto, consulte Alterando contextos.