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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour