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

本实验采用实验楼在线环境,因此省去了下载源码等步骤。

 

构建menuOS系统

1.将文件拷贝到本地系统

$ git clone https://github.com/mengning/linuxnet.git

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

2.编译根文件系统

$ cd linuxnet/lab3
$ make rootfs

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

3.启动menuOS

qemu -kernel ../../linux-3.18.6/arch/x86/boot/bzImage -initrd ../rootfs.img -s -S
#-S 让cpu停在开始界面(按c继续)

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

4.发送hello/hi

MenuOS>> replyhi
# Please input hello...
MenuOS>> hello

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

 

跟踪分析 TCP 协议

打开另一个终端,运行gdb并调试

(gdb)file ../../linux-3.18.6/vmlinux
(gdb)target remote:1234
(gdb)break start_kernel
(gdb)break sys_socketcall

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

最后可以发现,gdb可以追踪到start_kernel函数,断点在init/main.c的501行,sys_socketcall函数,断点在net/socket.c,2492行

 

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