繁体   English   中英

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

[英]Where the variable stored (data segment or heap or BSS) according to the variable's address?

Where存储的静态变量(数据段或堆或BSS)有点类似 ,但不是同一个。

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

我正在使用obj-c和c工作osx。

你有2个选择。

1.使用objdump

就像是

objdump -x a.out | grep YOUR_VARIABLE_ADDRESS

2.使用gcc的map选项生成地图文件

在gcc中编译这样的东西

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

现在

$ grep YOUR_VARIABLE_ADDRESS foo.map

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM