与全局变量相同,局部变量也存储于符号文件中。更加一致的是,调试器也将局部变量的名称解释为地址。可以安装与全局变量相同的方式进行读写操作。但是,如果需要向命令指定某个符号是本地符号,请在符号前面添加美元符号($)和感叹号(!),例如$!var。
Visual Studio和WinDbg提供了使用者可以使用(附加到命令上)的用户接口元素查看和编辑全局变量。可以参考《在Visual Studio查看和编辑内存及寄存器》和《在WinDbg查看和编辑全局变量》两章。
除此之外,也可以使用如下的方式展示、修改及使用局部变量:
- dv(展示局部变量display local variable)命令展示了全部局部变量的名称和数值。
- !for_each_local扩展使得使用者可以重复运行一条指令,每一个针对一个局部变量。
然而,在局部变量与全局变量之间还存在着一个主要的不同之处。应用程序运行时,局部变量的含义依赖于程序计数器的位置,因为局部变量的作用于仅仅局限于被定义的函数内部。
调试器依据局部上下文(local context)环境解释局部变量。默认情况下,该上下文与程序计数器的位置相匹配。但是调试器也可以改变上下文。想获取更多与局部上下文相关的信息可以参考《局部上下文》章节。
当局部上下文环境改变后,局部窗口(local window)立即更新以反应局部变量的新集合。dv命令也展示了新的变量。所有的这些变量名称通过之前描述的内存指令被正确解释。用户可以读写这些变量。