SA16225055冯金明 原创作品转载请注明出处
《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
实验内容
实验要求:
- 理解编译链接的过程和ELF可执行文件的格式
- 编程使用exec* 库函数加载一个可执行文件,动态链接分为可执行程序装载时动态链接和运行时动态链接,编程练习动态链接库的这两种使用方式
- 使用gdb跟踪分析一个execve系统调用内核处理函数sys_execve,验证对linux系统可执行程序所需处理过程的分析的理解
- 特别关注新的可执行程序是从哪里开始执行的?为什么execve系统调用返回后新的可执行程序能顺利执行?对于静态链接的可执行程序和动态链接的可执行程序execve系统调用返回时会有什么不同
关键实验截图:
- 在test.c中添加Exec()函数,并在menu命令中添加exec命令,修改Makefile,如图一所示
- 使用gdb调试,添加相应的断点,如图二所示
- 通过调试,查看加载和启动一个可执行程序的具体过程,如图三所示
图一 Exec( )
图二 设置断点