linux内核加载可执行文件

来源:互联网 发布:知乎提问后自己找不到 编辑:程序博客网 时间:2024/04/30 06:01

<span style="font-family: Arial, 'Hiragino Sans GB', SimSun, 宋体, serif; background-color: rgb(238, 238, 238);"> 张磊+原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 </span>

使用gdb跟踪分析一个execve系统调用内核处理函数sys_execve ,验证您对Linux系统加载可执行程序所需处理过程的理解

登陆实验楼虚拟机

cd LinuxKernelrm -rf menugit clone https://github.com/mengning/menu.gitcd menumv test_exec.c test.cmake rootfs

增加-s -S启动参数打开调试模式

qemu -kernel ../linux-3.18.6/arch/x86/boot/bzImage -initrd ../rootfs.img -s -S

启用 gbd 调试模式:

gdbfile ../linux-3.18.6/vmlinuxtarget remote:1234

设置断点:

b sys_execveb do_execveb do_execve_commonb exec_binprmb load_elf_binaryb start_thread



调试:


小结:

装载和启动一个可执行程序依次调用以下函数:sys_execve() -> do_execve() -> do_execve_common() -> exec_binprm() -> search_binary_handler() -> load_elf_binary() -> start_thread()



0 0