Partilhar via


IDiaStackFrame

Expõe as propriedades de um quadro de pilha.

IDiaStackFrame : IUnknown

Métodos na ordem de Vtable

Estes são os métodos suportados por esta interface:

Método

Descrição

IDiaStackFrame::get_allocatesBasePointer

Recupera um sinalizador que indica que o ponteiro de base está alocado para o código neste intervalo de endereço. Esse método é reprovado.

IDiaStackFrame::get_base

Recupera a base do endereço do quadro.

IDiaStackFrame::get_cplusplusExceptionHandling

Recupera um sinalizador que indica que a manipulação de exceção de 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 colocadas no empilhamento.

IDiaStackFrame::get_lengthParams

Recupera o número de bytes de parâmetros colocados no empilhamento.

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 registradores salvos colocados no empilhamento.

IDiaStackFrame::get_localsBase

Recupera a base de endereço dos locais.

IDiaStackFrame::get_maxStack

Recupera o número máximo de bytes colocados no empilhamento no quadro.

IDiaStackFrame::get_rawLVarInstanceValue

Recupera o valor da variável local especificado como bytes brutos.

IDiaStackFrame::get_registerValue

Recupera o valor de um registrador especificado.

IDiaStackFrame::get_returnAddress

Recupera o endereço de retorno do quadro.

IDiaStackFrame::get_size

Recupera o tamanho do quadro em bytes.

IDiaStackFrame::get_systemExceptionHandling

Recupera um sinalizador que indica que a manipulação de exceção 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 sua execução.

Observações para chamadores

Obter essa interface chamando o IDiaEnumStackFrames::Next método. Consulte o IDiaEnumStackFrames interface para obter um exemplo sobre como obter o IDiaStackFrame interface.

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

Consulte também

Referência

IDiaEnumStackFrames

IDiaEnumStackFrames::Next

IDiaStackWalkFrame

Outros recursos

Interfaces (SDK de Acesso à Interface de Depuração)