Partager via


structure DEBUG_STACK_FRAME_EX (dbgeng.h)

La structure DEBUG_STACK_FRAME_EX décrit un cadre de pile et l’adresse de l’instruction actuelle pour le cadre de pile.

Syntaxe

typedef struct _DEBUG_STACK_FRAME_EX {
  ULONG64 InstructionOffset;
  ULONG64 ReturnOffset;
  ULONG64 FrameOffset;
  ULONG64 StackOffset;
  ULONG64 FuncTableEntry;
  ULONG64 Params[4];
  ULONG64 Reserved[6];
  BOOL    Virtual;
  ULONG   FrameNumber;
  ULONG   InlineFrameContext;
  ULONG   Reserved1;
} DEBUG_STACK_FRAME_EX, *PDEBUG_STACK_FRAME_EX;

Membres

InstructionOffset

Emplacement dans l’espace d’adressage virtuel du processus de l’instruction associée pour le cadre de pile. Il s’agit généralement de l’adresse de retour de l’image de pile suivante ou du pointeur d’instruction actuel si le cadre se trouve en haut de la pile.

ReturnOffset

Emplacement dans l’espace d’adressage virtuel du processus de l’adresse de retour pour le cadre de pile. Il s’agit généralement de l’instruction associée pour le cadre de pile précédent.

FrameOffset

Emplacement dans l’espace d’adressage virtuel du processus de l’image de pile, s’il est connu. Certaines architectures de processeur n’ont pas de trame ou en ont plusieurs. Dans ce cas, le moteur choisit une valeur la plus représentative pour le niveau donné de la pile.

StackOffset

Emplacement dans l’espace d’adressage virtuel du processus de la pile du processeur.

FuncTableEntry

Emplacement dans l’espace d’adressage virtuel de la cible de l’entrée de fonction pour cette image, si disponible. Lorsqu’il est défini, il n’est pas garanti que ce pointeur reste valide indéfiniment et ne doit pas être conservé pour une utilisation ultérieure. Au lieu de cela, enregistrez la valeur d’InstructionOffset et utilisez-la avec IDebugSymbols3 ::GetFunctionEntryByOffset pour récupérer ultérieurement les informations d’entrée de fonction.

Params[4]

Valeurs des quatre premiers emplacements de pile qui sont passés à la fonction, le cas échéant. S’il existe moins de quatre arguments, les entrées restantes sont définies sur zéro. Il n’est pas garanti que ces emplacements de pile contiennent des valeurs de paramètre. Certaines conventions d’appel et optimisations du compilateur peuvent interférer avec l’identification des informations de paramètre. Pour obtenir des informations plus détaillées sur les arguments et une gestion appropriée de l’emplacement, utilisez IDebugSymbols ::GetScopeSymbolGroup pour récupérer les symboles de paramètre réels.

Reserved[6]

Réservé pour un usage futur. valeur de l’en-tête définie sur Null.

Virtual

La valeur est définie sur TRUE si cette trame de pile a été générée par le débogueur en décompressant. Sinon, la valeur est FALSE si elle a été formée à partir du contexte actuel d’un thread. En règle générale, il s’agit de TRUE pour le cadre situé en haut de la pile, où InstructionOffset est le pointeur d’instruction actuel.

FrameNumber

Index du cadre. Cet index compte le nombre d’images situées en haut de la pile des appels. L’image située en haut de la pile, qui représente l’appel actuel, a un index zéro.

InlineFrameContext

Contexte d’image inline.

Reserved1

Utilisé à des fins d’alignement. Définit la valeur 0.

Configuration requise

Condition requise Valeur
En-tête dbgeng.h (inclure DbgEng.h)