实验七 Linux 内核如何装载和启动一个可执行程序
打开终端,在终端中输入以下内容
cd ~/LinuxKernel
rm menu -rf
git clone https://github.com/mengning/menu.git
cd menu
mv test_exec.c test.c
make rootfs

打开test.c文件,查看exec函数:

下面进行gdb调试,在终端中输入
cd LinuxKernel
qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -S -s
打开另一个终端,进入gdb模式,设置三个断点
b sys_execve
b load_elf_binary
b start_thread

调试断点,输入po new_ip指令打印"elf_entry"所指向的可执行文件中定义的入口地址。可以看到地址为0x80495ba

结束调试,在终端中输入readelf -h hello查看hello的头部信息

本文介绍如何在Linux内核环境下加载并启动一个可执行程序,通过具体步骤展示了从克隆代码到使用gdb进行调试的过程,并分析了可执行文件的加载流程。

被折叠的 条评论
为什么被折叠?



