Freigeben über


!for_each_frame

Die Erweiterung !for_each_frame führt einen Debugger-Befehl einmal für jeden Frame im Stack des aktuellen Threads aus.

!for_each_frame ["CommandString"] 
!for_each_frame -?

Parameter

CommandString
Legt die Debugger-Befehle fest, die für jeden Frame einmal ausgeführt werden sollen. Wenn CommandString mehrere Befehle enthält, müssen Sie diese durch Semikolons trennen und CommandString in Anführungszeichen setzen. Wenn Sie mehrere Befehle einschließen, dürfen die einzelnen Befehle innerhalb von CommandString keine Anführungszeichen enthalten. Wenn Sie auf den Index des aktuellen Frames in CommandString verweisen möchten, verwenden Sie das @$frame Pseudoregister.

-?
Zeigt einen Hilfetext für diese Erweiterung im Befehlsfenster des Debugger an.

DLL

Ext.dll

Zusätzliche Informationen

Weitere Informationen über den lokalen Kontext finden Sie unter Ändern von Kontexten.

Hinweise

Wenn Sie keine Argumente angeben, zeigt die Erweiterung !for_each_frame eine Liste aller Frames und ihrer Frame-Indizes an. Eine detailliertere Liste aller Frames erhalten Sie mit dem Befehl k (Display Stack Backtrace) .

Mit dem Befehl k können Sie bis zu 256 Bilder aufnehmen. Für jeden aufgezählten Rahmen wird dieser Rahmen vorübergehend zum aktuellen lokalen Kontext (ähnlich wie bei dem Befehl .frame (Set Local Context)). Nachdem der Kontext festgelegt wurde, wird CommandString ausgeführt. Nachdem alle Frames verwendet wurden, wird der lokale Kontext auf den Wert zurückgesetzt, den er hatte, bevor Sie die Erweiterung !for_each_frame verwendet haben.

Wenn Sie CommandString einschließen, zeigt der Debugger den Frame und seinen Index an, bevor der Befehl für diesen Frame ausgeführt wird.

Der folgende Befehl zeigt alle lokalen Variablen für den aktuellen Stack an.

!for_each_frame !for_each_local dt @#Local