Debugging Tools for Windows |
.frame 命令指定使用哪个局部上下文(作用域)来解析局部变量,或者显示当前的局部上下文。
.frame [/r] = BasePtr [FrameIncrement]
.frame [/r] = BasePtr StackPtr InstructionPtr
模式 | 用户模式、内核模式 |
目标 | 活动目标、崩溃转储 |
平台 | 所有 |
程序运行时,局部变量的意义由程序计数器的位置决定,因为这些局部变量的作用域仅在定义它们的函数内部。如果没有使用.frame 命令,调试器使用当前函数(调用堆栈中的当前帧)的作用域作为局部上下文。
使用.frame 命令并指定需要的帧序号来改变局部上下文。
帧序号(frame number)是堆栈帧在堆栈回溯中的位置。可以使用k (Display Stack Backtrace)命令或者Calls 窗口查看堆栈回溯。第一行 (当前帧) 的帧序号是0。后面的行分别是1、2、3等等。
如果k命令使用n参数,则k命令堆栈回溯和帧序号。帧序号总是以16进制形式显示。另一方面,如果没有指定像0x这样的前缀,则.frame 用当前基数来识别它的参数。使用n (Set Number Base)命令来改变当前基数。
可以将局部上下文设置到另一个堆栈帧来查看另外的局部变量信息。但是,实际可用的变量由被执行的代码决定。
如果又对程序进行执行,调试器会将局部上下文重置为程序计数器的作用域。如果寄存器上下文改变,局部上下文也重置到调用堆栈顶部的帧。
关于局部上下文和其他上下文的设置的更多信息,查看改变上下文。关于如何显示局部变量的更多信息和其他内存相关的命令,查看读写内存。