You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

在Visual Studio社区版调试器中获取C++静态变量的内存地址

在Visual Studio社区版调试器中获取静态变量内存地址的方法

嘿,这个问题我太熟悉了!静态变量属于全局/静态存储区,程序加载时就完成了分配,在VS调试器里有好几种直观的方式获取它们的内存地址,给你详细说说:

1. 监视窗口直接查看

这是最省心的方法:

  • 先把程序断下来(比如在return 0;处打个断点,运行到这里)。
  • 打开监视窗口:可以通过顶部菜单调试 > Windows > 监视 > 监视1,或者快捷键Ctrl+Alt+W, 1调出。
  • 在监视窗口的输入框里直接敲静态变量名,比如qr或者R,回车后就能看到变量的当前值,旁边的地址列会直接显示它的内存地址。另外,把鼠标悬停在代码里的静态变量名上,弹出的tooltip里也会包含地址信息。

2. 用命令窗口执行取地址命令

如果习惯用命令操作,可以试试这个:

  • 打开命令窗口:菜单调试 > Windows > 命令,或者快捷键Ctrl+Alt+A
  • 输入? &q(这里的&就是C++里的取地址运算符),回车后调试器会直接输出q的内存地址和对应的值。同理,? &r? &R可以获取另外两个静态变量的地址。

3. 通过反汇编或模块符号查看

静态变量的地址在编译后是相对固定的(即使有ASLR,调试器也会自动帮你解析基地址偏移):

  • 打开反汇编窗口:菜单调试 > Windows > 反汇编,快捷键Ctrl+Alt+D。你会看到初始化静态变量的指令,比如类似mov DWORD PTR q, 7FFFFFFFh的代码,右键窗口选择显示符号名,可以切换查看原始的内存地址(或者直接看到符号对应的地址)。
  • 另外,打开模块窗口调试 > Windows > 模块),找到你的程序模块,右键选择查看符号,在符号列表里搜索qrR,就能看到它们对应的内存地址。

补充一句:静态变量在程序加载完成后就存在了,哪怕程序还没执行到访问它们的代码,只要程序处于调试中断状态,你就能用上面的方法找到它们的地址~

内容的提问来源于stack exchange,提问作者platizin

火山引擎 最新活动