这个作业属于哪个课程 | <2020-2021-1Linux内核原理与分析)> |
---|---|
这个作业要求在哪里 | <2020-2021-1Linux内核原理与分析第八周作业> |
这个作业的目标 | 学习Linux内核如何装载和启动一个可执行程序 |
作业正文 | https://www.cnblogs.com/bestYZF/p/14057642.html |
1.更新menu,,用test_exec.c将test.c覆盖,然后重新编译rootfs。
rm -rf menu
git clone https://github.com/mengning/menu.git
cd menu
mv test_exec.c test.c
make rootfs
2.启动内核到调试的状态,加载符号表并设置端口,准备单步调试。
qemu -kernel ../linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -S -s
3.启动新的端口开始gdb调试,设置断点"sys_exec""load_elf_bianry""start_thread"
(gdb)file linux-3.18.6/vmlinux
(gdb)target remote:1234
(gdb)b sys_exec
(gdb)b load_elf_binary
(gdb)b start_thread
4.进行单步调试。
通过"readeld -h hello"命令查看elf文件的头部信息,可以看到入口地址为0x8048736,对应的10进制地址即为134514486,与new_ip指向的地址一致。