3

与静态变量存储在哪里(数据段或堆或 BSS)有点相似?,但不是同一个。

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

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

4

1 回答 1

2

您有 2 个选项。

1.使用objdump

就像是

objdump -x a.out | grep YOUR_VARIABLE_ADDRESS

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

在 gcc 中编译类似的东西

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

现在

$ grep YOUR_VARIABLE_ADDRESS foo.map

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

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

于 2012-04-16T08:59:01.447 回答