IDiaStackFrame

Expose les propriétés d’un frame de pile.

Syntaxe

IDiaStackFrame : IUnknown

Méthodes dans l'ordre Vtable

Voici les méthodes prises en charge par cette interface :

Méthode Description
IDiaStackFrame::get_allocatesBasePointer Récupère un indicateur spécifiant si le pointeur de base est alloué pour le code dans cette plage d’adresses. Cette méthode est déconseillée.
IDiaStackFrame::get_base Récupère la base d’adresse du cadre.
IDiaStackFrame::get_cplusplusExceptionHandling Récupère un indicateur spécifiant que la gestion des exceptions C++ est en vigueur.
IDiaStackFrame::get_functionStart Récupère un indicateur spécifiant que le bloc contient le point d’entrée d’une fonction.
IDiaStackFrame::get_lengthLocals Récupère le nombre d’octets de variables locales envoyées sur la pile.
IDiaStackFrame::get_lengthParams Récupère le nombre d’octets de paramètres envoyés sur la pile.
IDiaStackFrame::get_lengthProlog Récupère le nombre d’octets de code de prologue dans le bloc
IDiaStackFrame::get_lengthSavedRegisters Récupère le nombre d’octets de paramètres envoyés sur la pile.
IDiaStackFrame::get_localsBase Récupère la base d’adresses des variables locales.
IDiaStackFrame::get_maxStack Récupère le nombre maximal d’octets poussés dans la pile de l’image.
IDiaStackFrame::get_rawLVarInstanceValue Récupère la valeur de la variable locale spécifiée en octets bruts.
IDiaStackFrame::get_registerValue Récupère la valeur d’un registre spécifié.
IDiaStackFrame::get_returnAddress Récupère l’adresse de retour du frame.
IDiaStackFrame::get_size Récupère la taille de l’image en octets.
IDiaStackFrame::get_systemExceptionHandling Récupère un indicateur spécifiant que la gestion des exceptions système est en vigueur.
IDiaStackFrame::get_type Récupère le type d’image.

Remarques

Une frame de pile est une abstraction d’un appel de fonction pendant son exécution.

Remarques pour les appelants

Obtenez cette interface en appelant la méthode IDiaEnumStackFrames::Next. Consultez l’interface IDiaEnumStackFrames pour découvrir comment obtenir l’interface IDiaStackFrame.

Exemple

Cet exemple montre comment afficher différents attributs d’un frame de pile.

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

Configuration requise

En-tête : Dia2.h

Bibliothèque : diaguids.lib

DLL : msdia80.dll

Voir aussi