如何从目标文件中获取全局变量的初始化值?

Ada*_*eld 2 global-variables binutils object-files

如果有目标文件,如何在该目标文件的数据段中获取全局变量的初始化值?例如,说我已经完成以下工作:

# I'm interested in the variable foo inside bar.o in libbar.a:
$ ar -x libbar.a bar.o
$ nm --print-size bar.o | grep foo
00000048 00000004 D foo
Run Code Online (Sandbox Code Playgroud)

这告诉我foo在大小为4的数据段中的偏移量为0x48,但是如何获取加载时获得的实际初始化值呢?

Ada*_*eld 5

弄清楚了:

objdump -j.data -s bar.o
Run Code Online (Sandbox Code Playgroud)

这给出了数据段的十六进制转储,使查找值变得容易。我以前曾经使用objdump -d过反汇编代码,但是这个-s选项对我来说是新的。