《linux内核与分析》第三周
20135130王川东
实验:构造一个简单的Linux系统的MenuOS
命令:qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img、
命令含义:kernel启动一个内核,其后为内核位置。
initrd指定一个根文件系统。
使用gdb调试和跟踪:
重新配置和编译Linux使之携带调试信息
命令:qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S
注:-S freeze CPU at startup (use ’c’ to start execution) CPU初始化之前冻结
-s shorthand for -gdb tcp::1234 在端口1234上创建gdb server (不想使用1234端口,则可以使用-gdb tcp:xxxx来取代-s选项)
另开一个shell窗口:
(gdb)file linux-3.18.6/vmlinux
进入LinuxKernel,输入指令:
得到结果:
重新配置和编译Linux使之携带调试信息;输入命令:qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -S -s
此时QEMU为Stopped状态:
另开窗口,输入指令:
linux-3.18.6/vmlinux
输入C,回车,QEMU开始执行:
输入list,可看到程序执行到此:
同样的方法,设置rest_init断点“