!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