使用GDB在C语言中查找本地变量的地址

10

假设我有一些类似以下的C代码:

void fun_1(unsigned int *age)

[...]

int main() {
unsigned int age[24]; }

在GDB中,如何找到age的地址?


答案:可以在GDB命令行中使用“&age”来查找age数组的地址。

5
查找函数地址 - age 不是您代码片段中的一个函数。 - Oliver Charlesworth
4
哪个年龄?在您进入任何一个函数后,p&age 不起作用吗?这两个都有 age - sidyll
1
请注意,有很多关于简单gdb命令的网站。在在Stack Overflow上发布问题之前,请先尝试使用Google搜索。ftp://ftp.gnu.org/pub/old-gnu/Manuals/gdb/html_node/gdb_109.html - André A. G. Scotá
你对本地变量 age 的地址感兴趣,它只是一个指针,还是 age 指向的地址? - Brian McFarland
这个回答解决了你的问题吗?查找变量Buf的确切地址 - user202729
2个回答

14

找到地址就像这样简单:

p &age

7

如果您不知道,这两个age并不相同。一个是在 main 函数中的本地变量,另一个是在 fun_1() 函数中的本地变量。所以,除非您将 mainage 的地址传递给 fun_1(),否则它们不会具有相同的地址。只需在 main 中设置断点并查看 age 的地址即可。

(gdb) break main
(gdb) p &age
.....
(gdb) break fun_1
(gdb) p &age
.....

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接