k, kb, kc, kd, kp, kP, kv (Display Stack Backtrace)

Os comandos k* exibem o quadro de pilha do thread especificado, juntamente 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]

Kernel-Mode, Arm Processor

[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 o thread cuja pilha deve 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 a Sintaxe do 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 multiprocessador.

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 que é 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 opção p 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 que é chamada no rastreamento de pilha, como o parâmetro p. 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 do 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 ). O valor padrão é 20 (0x14), a menos que você tenha alterado o valor padrão usando o comando .kframes (Definir Comprimento da Pilha ).

BasePtr
Especifica o ponteiro base para o rastreamento de pilha. O parâmetro BasePtr só estará disponível 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 de 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 de rip (ou eip) especifica.

Wordcount
Especifica o número de valores de DWORD_PTR na pilha a ser despejada. O valor padrão é 20 (0x14), a menos que você tenha alterado o valor padrão usando o comando .kframes (Definir Comprimento da Pilha ).

Ambiente

Modos

Modo de usuário, modo kernel

Destinos

Ao vivo, despejo de acidente

Plataformas

Tudo

Informações adicionais

Para obter mais informações sobre o contexto de registro e outras configurações de contexto, consulte Alterando contextos.

Comentários

Quando você emite o comando k, kb, kp, kP ou kv , um rastreamento de pilha é exibido em um formato tabular. Se o carregamento de linhas 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 o comando kp ou kP , os parâmetros completos para cada função que é 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.

Esse comando pode ser lento. Por exemplo, quando MyFunction1 chama MyFunction2, o depurador deve ter informações de símbolo completas para MyFunction1 para exibir os parâmetros que são passados nesta chamada. Esse comando não exibe totalmente as rotinas internas do Microsoft Windows que não são expostas em símbolos públicos.

Se você usar o comando kb ou kv , os três primeiros parâmetros que são passados para cada função serão exibidos. Se você usar o comando kv , os dados do FPO também serão exibidos.

Em um processador baseado em x86, o comando kv também exibe informações de convenção de chamada.

Quando você usa o comando kv , 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 de 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 @ Address

N1 é o número total de parâmetros.

N2 é o número de valores DWORD para os locais.

O endereço é o endereço do quadro de armadilhas.

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 comando kd exibe os dados brutos da pilha. Cada valor DWORD é exibido em uma linha separada. As informações do símbolo são exibidas para essas linhas junto com símbolos associados. Esse formato cria uma lista mais detalhada do que os outros comandos k* . O comando kd é equivalente a um comando dds (Memória de Exibição) que usa o endereço de pilha como seu parâmetro.

Se você usar o comando k no início de uma função (antes da execução da caixa de diálogo de função), receberá resultados incorretos. O depurador usa o registro de quadros para calcular o backtrace atual e esse registro não é definido corretamente para uma função até que sua caixa de diálogo tenha sido executada.

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 específico, um registro de contexto ou um quadro de armadilhas.

Informações adicionais

Para obter mais informações sobre o contexto de registro e outras configurações de contexto, consulte Alterando contextos.