.frame (Lokaler Kontext festlegen)

Der Befehl .frame gibt an, welcher lokale Kontext (Bereich) zum Interpretieren lokaler Variablen verwendet wird, oder zeigt den aktuellen lokalen Kontext an.

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

Parameter

/C
Legt den angegebenen Frame als aktuellen lokalen Überschreibungskontext fest. Diese Aktion ermöglicht es einem Benutzer, auf die nicht flüchtigen Register für jede Funktion im Aufrufstapel zuzugreifen.

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

FrameNumber
Gibt die Anzahl des Frames an, dessen lokaler Kontext Sie möchten. Wenn dieser Parameter 0 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, die zum Bestimmen des Frames verwendet wird, wenn Sie nach dem Befehlsnamen (.frame) ein Gleichheitszeichen (=) hinzufügen. Auf einem x86-basierten Prozessor fügen Sie ein weiteres Argument nach BasePtr (das als FrameIncrement interpretiert wird) oder zwei weitere Argumente nach BasePtr (die als InstructionPtr und StackPtr interpretiert werden) hinzu.

FrameIncrement
(nur x86-basierter Prozessor)

Gibt eine zusätzliche Anzahl von Frames über den Basiszeiger hinaus 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 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.

Environment

Element BESCHREIBUNG
Modi Benutzermodus, Kernelmodus
Targets Liveabbild, Absturzabbild
Plattformen All

Zusätzliche Informationen

Weitere Informationen zum lokalen Kontext und zu anderen Kontexteinstellungen finden Sie unter Ändern von Kontexten. Weitere Informationen zum Anzeigen lokaler Variablen und anderer speicherbezogener Befehle finden Sie unter Lese- und Schreibspeicher.

Hinweise

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

Um den lokalen Kontext zu ändern, verwenden Sie den Befehl .frame , 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 Fenster Aufrufe anzeigen. Die erste Zeile (der aktuelle Frame) ist frame number 0. Die nachfolgenden Zeilen stellen die Framenummern 1, 2, 3 usw. dar.

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

Sie können den lokalen Kontext auf einen anderen Stapelrahmen festlegen, damit Sie neue Informationen zu lokalen Variablen anzeigen können. Die tatsächlich verfügbaren Variablen hängen jedoch vom ausgeführten Code ab.

Der lokale Kontext wird auf den Bereich des Programmindikators zurückgesetzt, wenn eine Anwendungsausführung erfolgt. Der lokale Kontext wird auf den oberen Stapelrahmen zurückgesetzt, wenn der Registerkontext geändert wird.