.frame (definir contexto local)
O comando .frame especifica qual contexto local (escopo) é usado para interpretar variáveis locais ou exibe o contexto local atual.
.frame [/c] [/r] [FrameNumber]
.frame [/c] [/r] = BasePtr [FrameIncrement]
.frame [/c] [/r] = BasePtr StackPtr InstructionPtr
Parâmetros
/c
Define o quadro especificado como o contexto de substituição local atual. Essa ação permite que um usuário acesse os registros não voláteis de qualquer função na pilha de chamadas.
/r
Exibe registros e outras informações sobre o contexto local especificado.
Número do quadro
Especifica o número do quadro cujo contexto local você deseja. Se esse parâmetro for zero, o comando especificará o quadro atual. Se você omitir esse parâmetro, esse comando exibirá o contexto local atual.
BasePtr
Especifica o ponteiro base para o rastreamento de pilha usado para determinar o quadro, se você adicionar um sinal de igual (=) após o nome do comando (.frame). Em um processador baseado em x86, você adiciona outro argumento após BasePtr (que é interpretado como FrameIncrement) ou mais dois argumentos após BasePtr (que são interpretados como InstructionPtr e StackPtr).
FrameIncrement
(somente processador baseado em x86)
Especifica uma quantidade adicional de quadros após o ponteiro base. Por exemplo, se o ponteiro base 0x0012FF00 for o endereço do quadro 3, o comando .frame 12ff00 será equivalente a .frame 3 e .frame 12ff00 2 será equivalente a .frame 5.
StackPtr
(somente processador baseado em x86) Especifica o ponteiro de pilha para o rastreamento de pilha usado para determinar o quadro. Se você omitir StackPtr e InstructionPtr, o depurador usará o ponteiro de pilha especificado pelo registro esp e o ponteiro de instrução especificado pelo registro eip .
InstruçãoPtr
(somente processador baseado em x86) Especifica o ponteiro de instrução para o rastreamento de pilha usado para determinar o quadro. Se você omitir StackPtr e InstructionPtr, o depurador usará o ponteiro de pilha especificado pelo registro esp e o ponteiro de instrução especificado pelo registro eip .
Ambiente
Item | Descrição |
---|---|
Modos | Modo de usuário, modo kernel |
Destinos | Ao vivo, despejo de memória |
Plataformas | Tudo |
Informações Adicionais
Para obter mais informações sobre o contexto local e outras configurações de contexto, consulte Alterando contextos. Para obter mais informações sobre como exibir variáveis locais e outros comandos relacionados à memória, consulte Leitura e gravação de memória.
Comentários
Quando um aplicativo está em execução, o significado das variáveis locais depende da localização do contador do programa, pois o escopo dessas variáveis se estende apenas à função em que elas são definidas. Se você não usar o comando .frame , o depurador usará o escopo da função atual (o quadro atual na pilha) como o contexto local.
Para alterar o contexto local, use o comando .frame e especifique o número do quadro desejado.
O número do quadro é a posição do quadro de pilha dentro do rastreamento de pilha. Você pode exibir esse rastreamento de pilha com o comando k (Exibir Backtrace de Pilha) ou a janela Chamadas. A primeira linha (o quadro atual) é o quadro número 0. As linhas subsequentes representam os números de quadro 1, 2, 3 e assim por diante.
Se você usar o parâmetro n com o comando k, o comando k exibirá os números do quadro junto com o rastreamento de pilha. Esses números de quadro são sempre exibidos em formato hexadecimal. Por outro lado, o comando .frame interpreta seu argumento na base padrão, a menos que você substitua essa configuração por um prefixo como 0x. Para alterar a base padrão, use o comando n (Definir Base Numérica).
Você pode definir o contexto local para um quadro de pilha diferente para permitir que você visualize novas informações de variáveis locais. No entanto, as variáveis reais disponíveis dependem do código que está sendo executado.
O contexto local é redefinido para o escopo do contador do programa se ocorrer alguma execução de aplicativo. O contexto local é redefinido para o quadro de pilha superior se o contexto de registro for alterado.