Debugging Tools for Windows

!for_each_frame

!for_each_frame 对当前线程的调用堆栈的每一帧执行一次指定的调试器命令。

语法

!for_each_frame ["CommandString"
!for_each_frame -? 

参数

CommandString
指定每一帧要执行的调试器命令。如果CommandString 包含多条命令,必须用分号分隔它们,并且将整个CommandString 包含在引号中。如果有多条命令,则CommandString 中的每一条命令都不能使用引号。如果想在Command 中使用当前帧的序号,可以通过@$frame伪寄存器。
-?
调试器命令窗口中显示该扩展命令的帮助。

DLL

Windows 2000 Ext.dll
Windows XP和之后 Ext.dll

注释

如果没有指定任何参数,!for_each_frame 扩展列出所有的帧和它们的帧序号。关于帧列表的更详细信息,可以使用k (Display Stack Backtrace)命令。

k 命令最多处理256帧。对枚举出来的每一帧,这一帧都会暂时变成当前的局部上下文(和.frame (Set Local Context)命令类似)。当上下文设置之后,会执行 CommandString 。所有帧都被使用过之后,局部上下文会重置为使用!for_each_frame 之前的值。

如果包含CommandString,调试器会在为每一帧执行命令之前显示帧和帧序号。

下面的命令显示当前堆栈中的所有局部变量。

!for_each_frame !for_each_local dt @#Local

附加信息

关于局部上下文的更多信息,查看改变上下文

Build machine: CAPEBUILD