与静态变量存储在哪里(数据段或堆或 BSS)有点相似?,但不是同一个。
现在我得到了另一个进程的变量地址,例如:0x10fb90,这个变量存储在哪里(数据段或堆或 BSS),我可以仅从进程的 pid 和变量的地址获取位置吗?
我正在使用 obj-c 和 c 在 osx 上工作。
与静态变量存储在哪里(数据段或堆或 BSS)有点相似?,但不是同一个。
现在我得到了另一个进程的变量地址,例如:0x10fb90,这个变量存储在哪里(数据段或堆或 BSS),我可以仅从进程的 pid 和变量的地址获取位置吗?
我正在使用 obj-c 和 c 在 osx 上工作。
您有 2 个选项。
objdump
就像是
objdump -x a.out | grep YOUR_VARIABLE_ADDRESS
在 gcc 中编译类似的东西
$ gcc -o foo.exe -Wl,-Map,foo.map foo.c
现在
$ grep YOUR_VARIABLE_ADDRESS foo.map
如果您提供的所有地址都退出,这两种方法都将显示您的变量的位置。
PS:我添加的链接map file
显示了一个由 Visual Studio 链接器生成的示例地图文件,但在各种链接器生成的大多数地图文件格式中,格式通常相似