构建调试Linux内核网络代码的环境MenuOS系统
1.在实验楼上终端运行MenuOS系统
$ cd ~/LinuxKernel/ $ qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img
如图所示:

2.跟踪调试内核添加-s和-S选项启动MenuOS

3.使用gdb进行调试具体命令:
(gdb)file linux-3.18.6/vmlinux # 在gdb界面中targe remote之前加载符号表 (gdb)target remote:1234 # 建立gdb和gdbserver之间的连接 (gdb)break start_kernel # 断点的设置可以在target remote之前,也可以在之后 (gdb)c # 按c 让qemu上的Linux继续运行

4.实现简单网络通信功能
调用github上写好的代码,输入下列命令
$ cd ~/LinuxKernel $ git clone https://github.com/mengning/linuxnet.git $ cd linuxnet/lab2 $ make $ cd ../../menu/ $ make rootfs
如图所示:

增加了命令replyhi,功能是回复hi的TCP服务. 接下来就可以参照前面“跟踪分析Linux内核的启动过程的具体操作方法”进行跟踪调试了,只是我们socket接口使用的是系统sys_socketcall,可以将sys_socketcall设为断点跟踪看看:

浙公网安备 33010602011771号