构建调试Linux内核网络代码的环境MenuOS系统

1.在实验楼上终端运行MenuOS系统

$ cd ~/LinuxKernel/
$ qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img

如图所示:

构建调试Linux内核网络代码的环境MenuOS系统_第1张图片

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

构建调试Linux内核网络代码的环境MenuOS系统_第2张图片

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继续运行

 构建调试Linux内核网络代码的环境MenuOS系统_第3张图片

4.实现简单网络通信功能

调用github上写好的代码,输入下列命令

$ cd ~/LinuxKernel  
$ git clone https://github.com/mengning/linuxnet.git
$ cd linuxnet/lab2
$ make
$ cd ../../menu/
$ make rootfs

如图所示:

构建调试Linux内核网络代码的环境MenuOS系统_第4张图片

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

构建调试Linux内核网络代码的环境MenuOS系统_第5张图片 

构建调试Linux内核网络代码的环境MenuOS系统_第6张图片

 

你可能感兴趣的:(构建调试Linux内核网络代码的环境MenuOS系统)