.frame (Lokalen Kontext festlegen)

Der .frame-Befehl gibt an, welcher lokale Kontext (Bereich) verwendet wird, um lokale Variablen zu interpretieren oder den aktuellen lokalen Kontext anzuzeigen.

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

Parameter

/c
Legt den angegebenen Frame als aktuellen lokalen Außerkraftsetzungskontext fest. Mit dieser Aktion kann ein Benutzer auf die nichtvolatile Register für jede Funktion im Aufrufstapel zugreifen.

/r
Zeigt Register und andere Informationen zum angegebenen lokalen Kontext an.

FrameNumber
Gibt die Nummer des Frames an, dessen lokaler Kontext Sie verwenden möchten. Wenn dieser Parameter null ist, gibt der Befehl den aktuellen Frame an. Wenn Sie diesen Parameter weglassen, zeigt dieser Befehl den aktuellen lokalen Kontext an.

BasePtr
Gibt den Basiszeiger für die Stapelablaufverfolgung an, mit der der Frame bestimmt wird, wenn Sie nach dem Befehlsnamen (FRAME) ein Gleichheitszeichen (=) hinzufügen. Bei einem x86-basierten Prozessor fügen Sie ein weiteres Argument nach BasePtr (das als FrameIncrement interpretiert wird) oder zwei weitere Argumente nach BasePtr hinzu (die als "InstructionPtr " und "StackPtr" interpretiert werden).

FrameIncrement
(nur x86-basierter Prozessor)

Gibt eine zusätzliche Anzahl von Frames über den Basiszeiger an. Wenn beispielsweise der Basiszeiger 0x0012FF00 die Adresse von Frame 3 ist, entspricht der Befehl .frame 12ff00 .frame 3, und .frame 12ff00 2 entspricht .frame 5.

StackPtr
(nur x86-basierter Prozessor) Gibt den Stapelzeiger für die Stapelablaufverfolgung an, die zum Bestimmen des Frames verwendet wird. Wenn Sie StackPtr und InstructionPtr weglassen, verwendet der Debugger den Stapelzeiger, den das ESP-Register angibt, und den Anweisungszeiger, den das eip-Register angibt.

InstructionPtr
(nur x86-basierter Prozessor) Gibt den Anweisungszeiger für die Stapelablaufverfolgung an, die zum Ermitteln des Frames verwendet wird. Wenn Sie StackPtr und InstructionPtr weglassen, verwendet der Debugger den Stapelzeiger, den das ESP-Register angibt, und den Anweisungszeiger, den das eip-Register angibt.

Environment

Element Beschreibung
Modi Benutzermodus, Kernel-Modus
Ziele Live, Crash Dump
Plattformen Alle

Zusätzliche Informationen

Weitere Informationen zum lokalen Kontext und anderen Kontexteinstellungen finden Sie unter Ändern von Kontexten. Weitere Informationen zum Anzeigen lokaler Variablen und anderer speicherbezogener Befehle finden Sie unter Lesen und Schreiben von Arbeitsspeicher.

Hinweise

Wenn eine Anwendung ausgeführt wird, hängt die Bedeutung lokaler Variablen vom Speicherort des Programmzählers ab, da sich der Umfang dieser Variablen nur auf die Funktion erstreckt, in der sie definiert sind. Wenn Sie den .frame-Befehl nicht verwenden, verwendet der Debugger den Bereich der aktuellen Funktion (den aktuellen Frame im Stapel) als lokalen Kontext.

Um den lokalen Kontext zu ändern, verwenden Sie den .frame-Befehl , und geben Sie die gewünschte Framenummer an.

Die Framenummer ist die Position des Stapelrahmens innerhalb der Stapelablaufverfolgung. Sie können diese Stapelablaufverfolgung mit dem Befehl k (Display Stack Backtrace) oder dem Aufruffenster anzeigen. Die erste Zeile (der aktuelle Frame) ist die Framenummer 0. Die nachfolgenden Zeilen stellen die Rahmennummern 1, 2, 3 usw. dar.

Wenn Sie den Parameter "n" mit dem Befehl "k" verwenden, zeigt der Befehl "k" Framenummern zusammen mit der Stapelablaufverfolgung an. Diese Framenummern werden immer in hexadezimaler Form angezeigt. Andererseits interpretiert der FRAME-Befehl sein Argument im Standardradiix, es sei denn, Sie überschreiben diese Einstellung mit einem Präfix wie 0x. Verwenden Sie den Befehl n (Zahlenbasis festlegen), um den Standardradiix zu ändern.

Sie können den lokalen Kontext auf einen anderen Stapelframe festlegen, damit Sie neue lokale Variableninformationen anzeigen können. Die tatsächlich verfügbaren Variablen hängen jedoch vom Code ab, der ausgeführt wird.

Der lokale Kontext wird auf den Bereich des Programmzählers zurückgesetzt, wenn eine Anwendungsausführung auftritt. Der lokale Kontext wird auf den oberen Stapelframe zurückgesetzt, wenn der Registerkontext geändert wird.