潘俊洋
原创作品转载请注明出处
《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
使用gdb跟踪sys_execve内核函数的处理过程,分析exec*函数对应的系统调用处理过程,理解Linux内核如何装载和启动一个可执行程序。
登陆实验楼虚拟机http://www.shiyanlou.com/courses/195
打开shell终端,执行以下命令:
cd LinuxKernel
rm -rf menu
git clone https://github.com/mengning/menu.git
cd menu
mv test_exec.c test.c
make rootfs
可以看到启动后的MenuOS已经包含了exec命令。
可以通过增加-s -S启动参数打开调试模式
qemu -kernel ../linux-3.18.6/arch/x86/boot/bzImage -initrd ../rootfs.img -s -S
打开gdb进行远程调试
gdb
file ../linux-3.18.6/vmlinux
target remote:1234
设置断点
b sys_execve
b do_execve
b do_execve_common
b exec_binprm
b search_binary_handler
b load_elf_binary
b start_thread
通过查看源码可以看出执行exec命令是通过调用execlp函数实现的,属于库函数exec*都是execve的封装例程。
/Linux/p6.htm
/morphad/article/details/
/titer1/article/details/
/titer1/article/details/
原文:http://www.cnblogs.com/20135230pjy/p/5372394.html