变量存储的位置(数据段或堆或BSS)根据变量的地址?

时间:2012-04-16 08:46:26

标签: c linux macos process heap

Where are static variables stored (data segment or heap or BSS)?略有相似,但不一样。

现在我得到了一个其他进程的变量地址,如:0x10fb90,这个变量存储在哪里(数据段或堆或BSS),我可以从进程中获取位置' s pid和变量的地址?

我正在使用obj-c和c。

开发osx

1 个答案:

答案 0 :(得分:2)

您有2个选项。

1。使用objdump

这样的东西
objdump -x a.out | grep YOUR_VARIABLE_ADDRESS

2。使用gcc的map选项生成map file

在gcc中编译类似的东西

$ gcc -o foo.exe -Wl,-Map,foo.map foo.c

现在

$ grep YOUR_VARIABLE_ADDRESS foo.map

如果您提供的所有地址都退出,这两种方法都会显示您的变量的位置。

PS :我为map file添加的链接显示了由Visual Studio链接器生成的示例地图文件,但格式在生成的大多数地图文件格式中通常类似通过各种连接器