访问全局变量

全局变量的名称存储在编译应用程序时创建的符号文件中。 调试器将全局变量的名称解释为虚拟地址。 接受地址作为参数的任何命令也接受变量的名称。 因此,可以使用通过虚拟地址访问内存中介绍的所有命令来读取或写入全局变量。

此外,可以使用 ?(计算表达式)命令显示与任何符号关联的地址。

WinDbg 提供用户界面元素,可以使用这些元素(除了命令)来查看和编辑全局变量。 请参阅在 WinDbg (Classic) 中查看和编辑全局变量

请看下面的示例。 假设您想要检查 MyCounter 全局变量,该变量是一个 32 位整数。 另假设默认基数为 10。

可以获取此变量的地址,然后如下所示显示该变量。

0:000> ? MyCounter 
Evaluate expression: 1244892 = 0012fedc
0:000> dd 0x0012fedc L1 
0012fedc  00000052

第一个命令输出会告知 MyCounter 的地址是 0x0012FEDC。 然后可以使用 d*(显示内存)命令在此地址处显示一个双字。 (也可以使用 1244892,这是此地址的十进制版本。但是,大多数 C 程序员更喜欢使用 0x0012FEDC。)第二个命令告知 MyCounter 的值为 0x52(十进制 82)。

也可以在以下命令中执行这些步骤。

0:000> dd MyCounter L1 
0012fedc  00000052

若要将 MyCounter 的值更改为十进制 83,请使用以下命令。

0:000> ed MyCounter 83 

此示例使用十进制输入,因为该格式对于整数而言更为自然。 但是,d\* 命令的输出仍采用十六进制格式。

0:000> dd MyCounter L1 0012fedc  00000053