IDiaStackFrame

espone le proprietà di uno stack frame.

IDiaStackFrame : IUnknown

Metodi nell'ordine di Vtable

Di seguito sono metodi supportati da questa interfaccia:

Metodo

Descrizione

IDiaStackFrame::get_allocatesBasePointer

recupera un flag che indica che il puntatore di base è allocato per il codice in questo intervallo di indirizzi.Il metodo è deprecato.

IDiaStackFrame::get_base

Recupera la base dell'indirizzo del frame.

IDiaStackFrame::get_cplusplusExceptionHandling

Recupera un flag che indica che la gestione delle eccezioni C++ è attiva.

IDiaStackFrame::get_functionStart

recupera un flag che indica che il blocco contiene il punto di ingresso di una funzione.

IDiaStackFrame::get_lengthLocals

Recupera il numero di byte delle variabili locali inserite nello stack.

IDiaStackFrame::get_lengthParams

Recupera il numero di byte dei parametri spinti nello stack.

IDiaStackFrame::get_lengthProlog

Recupera il numero di byte del codice di prologo nel blocco

IDiaStackFrame::get_lengthSavedRegisters

Recupera il numero di byte dei registri salvati spinti nello stack.

IDiaStackFrame::get_localsBase

Recupera la base di indirizzo variabili locali.

IDiaStackFrame::get_maxStack

Recupera il numero massimo di byte spinti nello stack nel frame.

IDiaStackFrame::get_rawLVarInstanceValue

Recupera il valore della variabile locale specificata come byte non elaborati.

IDiaStackFrame::get_registerValue

recupera il valore di un registro specificato.

IDiaStackFrame::get_returnAddress

Recupera l'indirizzo di ritorno del frame.

IDiaStackFrame::get_size

Recupera la dimensione del frame in byte.

IDiaStackFrame::get_systemExceptionHandling

Recupera un flag che indica che la gestione delle eccezioni del sistema è attiva.

IDiaStackFrame::get_type

recupera il tipo di frame.

Note

Uno stack frame è un'astrazione di una chiamata di funzione durante l'esecuzione.

Note per i chiamanti

Leggi questa interfaccia chiamando IDiaEnumStackFrames::Next metodo.vedere IDiaEnumStackFrames interfaccia per un esempio sulla verifica IDiaStackFrame interfaccia.

Esempio

In questo esempio vengono visualizzati i vari attributi di uno stack frame.

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);
        }
    }
}

Requisiti

intestazione: Dia2.h

raccolta: diaguids.lib

DLL: msdia80.dll

Vedere anche

Riferimenti

IDiaEnumStackFrames

IDiaEnumStackFrames::Next

IDiaStackWalkFrame

Altre risorse

Interfacce (Debug Interface Access SDK)