IDiaStackFrame
Expõe as propriedades de um quadro de pilha.
Sintaxe
IDiaStackFrame : IUnknown
Métodos na ordem VTable
Veja os seguintes métodos compatíveis com esta interface:
Método | Descrição |
---|---|
IDiaStackFrame::get_allocatesBasePointer | Recupera um sinalizador que indica que o ponteiro base é alocado para código nesse intervalo de endereços. Esse método é preterido. |
IDiaStackFrame::get_base | Recupera a base de endereço do quadro. |
IDiaStackFrame::get_cplusplusExceptionHandling | Recupera um sinalizador que indica que a manipulação de exceção do C++ está em vigor. |
IDiaStackFrame::get_functionStart | Recupera um sinalizador que indica que o bloco contém o ponto de entrada de uma função. |
IDiaStackFrame::get_lengthLocals | Recupera o número de bytes de variáveis locais enviadas por push na pilha. |
IDiaStackFrame::get_lengthParams | Recupera o número de bytes de parâmetros enviados por push para a pilha. |
IDiaStackFrame::get_lengthProlog | Recupera o número de bytes de código de prólogo no bloco |
IDiaStackFrame::get_lengthSavedRegisters | Recupera o número de bytes de registros salvos enviados por push na pilha. |
IDiaStackFrame::get_localsBase | Recupera a base de endereços dos locais. |
IDiaStackFrame::get_maxStack | Recupera o número máximo de bytes enviados por push na pilha no quadro. |
IDiaStackFrame::get_rawLVarInstanceValue | Recupera o valor da variável local especificada como bytes brutos. |
IDiaStackFrame::get_registerValue | Recupera o valor de um registro especificado. |
IDiaStackFrame::get_returnAddress | Recupera o endereço de retorno do quadro. |
IDiaStackFrame::get_size | Recupera o tamanho do buffer em bytes. |
IDiaStackFrame::get_systemExceptionHandling | Recupera um sinalizador que indica que o tratamento de exceções do sistema está em vigor. |
IDiaStackFrame::get_type | Recupera o tipo de quadro. |
Comentários
Um quadro de pilha é uma abstração de uma chamada de função durante a execução dela.
Observações para chamadores
Obtenha essa interface chamando o método IDiaEnumStackFrames::Next. Confira a interface IDiaEnumStackFrames para ver um exemplo de como obter a interface IDiaStackFrame
.
Exemplo
Este exemplo exibe vários atributos de um quadro de pilha.
void PrintStackFrame(IDiaStackFrame* pFrame)
{
if (pFrame != NULL)
{
ULONGLONG bottom = 0;
ULONGLONG top = 0;
if (pFrame->get_base(&bottom) == S_OK &&
pFrame->get_registerValue( CV_REG_ESP, &top ) == S_OK )
{
printf("range = 0x%08I64x - 0x%08I64x\n", bottom, top);
}
ULONGLONG returnAddress = 0;
if (pFrame->get_returnAddress(&returnAddress) == S_OK)
{
printf("return address = 0x%08I64x\n", returnAddress);
}
DWORD lengthFrame = 0;
DWORD lengthLocals = 0;
DWORD lengthParams = 0;
DWORD lengthProlog = 0;
DWORD lengthSavedRegs = 0;
if (pFrame->get_size(&lengthFrame) == S_OK &&
pFrame->get_lengthLocals(&lengthLocals) == S_OK &&
pFrame->get_lengthParams(&lengthParams) == S_OK &&
pFrame->get_lengthProlog(&lengthProlog) == S_OK &&
pFrame->get_lengthSavedRegisters(&lengthSavedRegs) == S_OK)
{
printf("stack frame size = 0x%08lx bytes\n", lengthFrame);
printf("length of locals = 0x%08lx bytes\n", lengthLocals);
printf("length of parameters = 0x%08lx bytes\n", lengthParams);
printf("length of prolog = 0x%08lx bytes\n", lengthProlog);
printf("length of saved registers = 0x%08lx bytes\n", lengthSavedRegs);
}
}
}
Requisitos
Cabeçalho: Dia2.h
Biblioteca: diaguids.lib
DLL: msdia80.dll