DEBUG_STACK_FRAME structure (dbgeng.h)

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

Syntaxe

typedef struct _DEBUG_STACK_FRAME {
  ULONG64 InstructionOffset;
  ULONG64 ReturnOffset;
  ULONG64 FrameOffset;
  ULONG64 StackOffset;
  ULONG64 FuncTableEntry;
  ULONG64 Params[4];
  ULONG64 Reserved[6];
  BOOL    Virtual;
  ULONG   FrameNumber;
} DEBUG_STACK_FRAME, *PDEBUG_STACK_FRAME;

Membres

InstructionOffset

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

ReturnOffset

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

FrameOffset

Emplacement dans l’espace d’adressage virtuel du processus de la trame de pile, s’il est connu. Certaines architectures de processeur n’ont pas de frame 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 ce frame, 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 de InstructionOffset et utilisez-la avec IDebugSymbols3 ::GetFunctionEntryByOffset pour récupérer les informations d’entrée de fonction ultérieurement.

Params[4]

Les valeurs des quatre premiers emplacements de pile qui sont passés à la fonction, si disponibles. S’il y a 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 de l’emplacement appropriée, utilisez IDebugSymbols ::GetScopeSymbolGroup pour récupérer les symboles de paramètre réels.

Reserved[6]

Réservé pour un usage futur.

Virtual

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

FrameNumber

Index du frame. Cet index compte le nombre de trames 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.

Configuration requise

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