首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Objdump未显示完整地址

Objdump未显示完整地址
EN

Stack Overflow用户
提问于 2017-08-03 20:13:39
回答 2查看 2.5K关注 0票数 1

有办法在objdump得到完整的地址吗?正在使用的命令是:objdump -d progname

前导零是不正确的。地址如下:

地址中的最后三个值是正确的;但是,我非常希望在objdump中显示完整的地址。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-04 09:18:09

在加载应用程序之前,您无法知道它在内存中的位置。

尝试以下代码:

代码语言:javascript
复制
#include <stdio.h>
int main()
{
    printf("%p\n", main);
}

gcc test.c编译它并运行几次。

我的结果显示:

代码语言:javascript
复制
0x55f71f8936b0
0x5630ed7ff6b0
0x558a18eea6b0
...

所以你不能确定它会在记忆中的什么位置结束。我相信情况并不总是如此,这种行为是为了安全“东西”。如果老内核/加载程序在每次运行时给出相同的地址,我也不会感到惊讶。不过,我不太确定。

当然,objdump会给出相对地址:

代码语言:javascript
复制
00000000000006b0 <main>:

请记住,此程序的输出不给您物理地址,它们仍然是虚拟的。

关键是,objdump转储的地址是链接器的责任,每个执行过程中的实际虚拟地址都在那里,因为加载器

票数 2
EN

Stack Overflow用户

发布于 2018-11-01 22:59:48

除已接受的答案外:

要获得正确的地址,您可以在gdb中运行程序,然后输入start,然后执行"disas functionname“,它将显示正确的地址。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45493756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档