gdb应用程序-用户层的第一条指令
2022/1/16 22:03:56
本文主要是介绍gdb应用程序-用户层的第一条指令,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
参考:
starti 在第一条指令处停下来
https://www.cnblogs.com/zhangzhiwei122/p/15811300.html
链接与装载 interrupter 解释器
https://blog.csdn.net/u011734326/article/details/101028881
问题:
linux环境下可执行文件 - 用户层代码的第一条指令从哪儿开始执行?
interpreter 解释器
第一条指令并不是 main 开始 的,
1、对于单独的一个elf格式的文件【可执行文件,或者动态链接库文件】,其入口通过readelf -h xxx 可以查看到
2、对于 有 interpreter 的可执行文件,由 interpreter 负责执行它。即 用户层的第一条执行指令是 interpreter 的指令。
示例
如上图,这是一个具有 interpreter 的程序,其由 /lib64/ld-linux-x86-64.so.2 负责装载执行。
/lib64/ld-linux-x86-64.so.2 符号链接到 /lib/x86_64-linux-gnu/ld-2.31.so 上面
/lib/x86_64-linux-gnu/ld-2.31.so 再没有 interpreter 了。
通常 ld.so 被称作 动态装载器,就是因为它基本上是 所有 应用层程序的 interpreter 。
入口
拷贝 /lib/x86_64-linux-gnu/ld-2.31.so 为 ld.so [备用】
cp /lib/x86_64-linux-gnu/ld-2.31.so ./ld.so
readelf & objdump ld.so 的入口
gdb starti 的第一条指令
上图中,红色框 内的 机器码 和 ld.so 入口处的一致,表示其为 用户从程序的 第一条指令。
linux 内核 怎么到第一条用户层指令的?
参考
链接与装载 interrupter 解释器
https://blog.csdn.net/u011734326/article/details/101028881
这篇关于gdb应用程序-用户层的第一条指令的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现
- 2024-05-30我们小公司,哪像华为一样,用得上IPD(集成产品开发)?
- 2024-05-30java excel上传--poi
- 2024-05-30安装笔记本应用商店的pycharm,再安排pandas等模块,说是没有打包工具?
- 2024-05-29java11新特性