.frame (Définir le contexte local)

La commande .frame spécifie quel contexte local (étendue) est utilisé pour interpréter les variables locales ou affiche le contexte local actuel.

.frame [/c] [/r] [FrameNumber] 
.frame [/c] [/r] = BasePtr [FrameIncrement] 
.frame [/c] [/r] = BasePtr StackPtr InstructionPtr 

Paramètres

/C
Définit le cadre spécifié comme contexte de remplacement local actuel. Cette action permet à un utilisateur d’accéder aux registres non volatiles pour n’importe quelle fonction de la pile d’appels.

/r
Affiche les registres et d’autres informations sur le contexte local spécifié.

FrameNumber
Spécifie le numéro de l’image dont vous souhaitez obtenir le contexte local. Si ce paramètre est égal à zéro, la commande spécifie l’image actuelle. Si vous omettez ce paramètre, cette commande affiche le contexte local actuel.

BasePtr
Spécifie le pointeur de base pour la trace de pile utilisée pour déterminer le cadre, si vous ajoutez un signe égal (=) après le nom de la commande (.frame). Sur un processeur x86, vous ajoutez un autre argument après BasePtr (qui est interprété comme FrameIncrement) ou deux autres arguments après BasePtr (qui sont interprétés comme InstructionPtr et StackPtr).

FrameIncrement
(processeur x86 uniquement)

Spécifie une quantité supplémentaire d’images au-delà du pointeur de base. Par exemple, si le pointeur de base 0x0012FF00 est l’adresse de l’image 3, la commande .frame 12ff00 équivaut à .frame 3 et .frame 12ff00 2 équivaut à .frame 5.

StackPtr
(processeur x86 uniquement) Spécifie le pointeur de pile pour la trace de pile utilisée pour déterminer le cadre. Si vous omettez StackPtr et InstructionPtr, le débogueur utilise le pointeur de pile que le registre esp spécifie et le pointeur d’instruction spécifié par le registre eip .

InstructionPtr
(processeur x86 uniquement) Spécifie le pointeur d’instruction pour la trace de pile qui est utilisé pour déterminer le cadre. Si vous omettez StackPtr et InstructionPtr, le débogueur utilise le pointeur de pile que le registre esp spécifie et le pointeur d’instruction spécifié par le registre eip .

Environnement

Élément Description
Modes Mode utilisateur, mode noyau
Targets Vidage en direct sur incident
Plateformes Tous

Informations supplémentaires

Pour plus d’informations sur le contexte local et d’autres paramètres de contexte, consultez Modification des contextes. Pour plus d’informations sur l’affichage des variables locales et d’autres commandes liées à la mémoire, consultez Lecture et écriture de la mémoire.

Remarques

Lorsqu’une application est en cours d’exécution, la signification des variables locales dépend de l’emplacement du compteur du programme, car l’étendue de ces variables s’étend uniquement à la fonction dans laquelle elles sont définies. Si vous n’utilisez pas la commande .frame , le débogueur utilise l’étendue de la fonction active (l’image active sur la pile) comme contexte local.

Pour modifier le contexte local, utilisez la commande .frame et spécifiez le numéro de trame souhaité.

Le numéro d’image est la position du cadre de pile dans la trace de pile. Vous pouvez afficher cette trace de pile avec la commande k (Display Stack Backtrace) ou la fenêtre Appels. La première ligne (le cadre actuel) est le numéro d’image 0. Les lignes suivantes représentent les numéros d’image 1, 2, 3, et ainsi de suite.

Si vous utilisez le paramètre n avec la commande k , la commande k affiche les numéros de trame ainsi que la trace de pile. Ces numéros d’image sont toujours affichés sous forme hexadécimale. D’autre part, la commande .frame interprète son argument dans le radix par défaut, sauf si vous remplacez ce paramètre par un préfixe tel que 0x. Pour modifier le radix par défaut, utilisez la commande n (Set Number Base).

Vous pouvez définir le contexte local sur une trame de pile différente pour vous permettre d’afficher les nouvelles informations de variable locale. Toutefois, les variables réelles disponibles dépendent du code en cours d’exécution.

Le contexte local est réinitialisé à l’étendue du compteur du programme si une exécution d’application se produit. Le contexte local est réinitialisé dans le cadre de la pile supérieure si le contexte du registre est modifié.