Sdílet prostřednictvím


IDiaStackFrame

Zpřístupní vlastnosti rámečku zásobníku.

IDiaStackFrame : IUnknown

Metody v pořadí virtuální tabulka

Toto rozhraní podporuje metody jsou následující:

Metoda

Description

IDiaStackFrame::get_allocatesBasePointer

Použije příznak označující, že základní ukazatel je přidělen kód v tomto rozsahu adres.Tato metoda se již nepoužívá.

IDiaStackFrame::get_base

Načte adresu základnu rámu.

IDiaStackFrame::get_cplusplusExceptionHandling

Použije příznak označující, že zpracování výjimek v jazyce C++ je v platnosti.

IDiaStackFrame::get_functionStart

Příznak označující, že blok obsahuje vstupní bod funkce načte.

IDiaStackFrame::get_lengthLocals

Počet bajtů lokální proměnné v zásobníku tlačné načte.

IDiaStackFrame::get_lengthParams

Zjišťuje počet bajtů parametrů posunuta v zásobníku.

IDiaStackFrame::get_lengthProlog

Zjišťuje počet bajtů kódu prologu v bloku

IDiaStackFrame::get_lengthSavedRegisters

Zjišťuje počet bajtů uložených registry posunuta v zásobníku.

IDiaStackFrame::get_localsBase

Získá základní adresu lokální proměnné.

IDiaStackFrame::get_maxStack

Maximální počet bajtů, které posune do zásobníku v rámci získá.

IDiaStackFrame::get_rawLVarInstanceValue

Načte hodnotu zadanou místní proměnné jako raw bajtů.

IDiaStackFrame::get_registerValue

Načte hodnotu zadanou rejstříku.

IDiaStackFrame::get_returnAddress

Zpáteční adresa na snímek načte.

IDiaStackFrame::get_size

Obnoví velikost rámce v bajtech.

IDiaStackFrame::get_systemExceptionHandling

Použije příznak označující, že je systém zpracování výjimek v platnosti.

IDiaStackFrame::get_type

Načte typ rámce.

Poznámky

Snímek zásobníku je abstrakcí volání funkce během jejího vykonávání.

Poznámky pro volající

Získat voláním rozhraní IDiaEnumStackFrames::Next metoda.Najdete IDiaEnumStackFrames rozhraní, například získání IDiaStackFrame rozhraní.

Příklad

Tento příklad zobrazuje různé atributy snímek zásobníku.

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

Požadavky

Záhlaví: Dia2.h

Knihovny: diaguids.lib

Knihovna DLL: msdia80.dll

Viz také

Referenční dokumentace

IDiaEnumStackFrames

IDiaEnumStackFrames::Next

IDiaStackWalkFrame

Další zdroje

Rozhraní (ladění přístupu k rozhraní SDK)