.f+, .f- (Shift Local Context)

.f+ 命令将帧序号移动到当前堆栈中的下一帧。.f- 命令将帧序号移动到当前堆栈中的上一帧。

语法

.f+  
.f-  

环境

模式 用户模式、内核模式
目标 活动目标、崩溃转储
平台 所有

 

注释

(frame)用来指定调试器用来解析局部变量的局部上下文(作用域)。

.f+ .f- 命令是用来在当前调用堆栈中移动到下一帧或者前一帧的快捷方式。这些命令和下面的.frame 命令作用相同,但是.f 要更短更方便:

  • .f+.frame @$frame + 1一样。
  • .f-.frame @$frame - 1一样。

美元符号($)表示帧的值是一个伪寄存器。At符号(@)使得调试器访问该值更快,因为它告诉调试器后面的字符串是一个寄存器或者伪寄存器。

程序运行时,局部变量的意义由程序计数器的位置决定,因为这些变量的作用域仅在定义它们的函数内部。如果没有使用.f+.f- 命令(或者 .frame 命令),调试器会使用当前函数(调用堆栈中的当前帧)的作用域作为局部上下文。

帧序号(frame number)是堆栈帧在堆栈回溯中的位置。可以使用k, kb, kd, kp, kP, kv (Display Stack Backtrace)命令或者Calls 窗口查看堆栈回溯。第一行 (当前帧) 的帧序号是0。后面的行分别是1、2、3等等。

可以将局部上下文设置到另一个堆栈帧来查看新的局部变量信息。但是,实际可用的变量由执行的代码决定。

如果又对程序进行执行,调试器会将局部上下文重置为程序计数器的作用域。如果寄存器上下文改变,局部上下文也重置到调用堆栈顶部的帧。