【问题标题】:Finding offset of an object file using objdump使用 objdump 查找目标文件的偏移量
【发布时间】:2011-05-10 12:16:32
【问题描述】:

在尝试查找特定偏移量对应的目标文件的代码时,我有点困惑。偏移量为0xB71B13E8

使用proc/<PID>/maps,我发现目标进程的libX11库的文本代码映射到0xB70CC000-0xB71B7000区域。

我现在想使用 objdump 在 X11 库 /usr/lib/libX11.so.6.2.0 的目标文件上找到这个偏移量。

我应该查看0xB71B7000 - 0xB71B13E8 = 0x5C18 还是0xB71B13E8 - 0xB70CC000 = 0xE53E8

我的另一个问题是: libX11 库的文本代码所在的0xB70CC000-0xB71B7000 区域为0xEB000 字节。但是,当我 objdump /usr/lib/libX11.so.6.2.0 时,我可以看到从 0xA3517 to 0x135C0 开始的偏移量(即只有 0x8FF57)。有什么原因吗?

提前致谢。

【问题讨论】:

    标签: linux object memory-management dynamic-memory-allocation


    【解决方案1】:

    /proc/X/maps 中 r-x 部分的第一个地址(你也可以使用 'pmap X')是库的第一个虚拟地址,而 objdump --disassemble 显示的偏移量是虚拟地址假设从 0 开始。您感兴趣的地址是 0xE53E8(假设您给出的数字来自查看 r-x 映射),因此在 objdump --disassemble 输出中查找该地址以找到正确的代码位置。

    请注意,您可以使用 gdb 直接查看正在运行的程序的内存。启动 gdb 然后运行 ​​'attach X' ,其中 X 是正在运行的程序的 PID,然后 'disassemble 0xB71B13E8'。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-04
      • 1970-01-01
      • 2017-10-18
      • 1970-01-01
      • 2021-06-28
      • 2013-07-14
      • 2018-10-12
      • 2017-09-08
      相关资源
      最近更新 更多