构建调试Linux内核网络代码的环境MenuOS系统
首先先来构建一个简单的Linux内核。大体上是分为两个步骤,首先是现在内核源代码编译内核,然后制作根文件系统,而实验楼已经为我们已经搭建了实验环境,只需要至今cd进Linux 3.18.6就行了,以下是MenuOS正在启动
到此为止就完成了一个简单的内核搭建。然后我们开始使用GDB调试,再重新打开一个终端可以进行如下步骤:
打开shell终端,执行以下命令:
qemu -kernel linux-3.18.6/arch/x86/boot/bzImage-initrd rootfs.img -s -S
关于-s和-S选项的说明:
-S freeze CPU at startup (use ’c’ to start execution) 在系统启动的时候冻结CPU,使用c键继续执行后续操作
-s shorthand for -gdb tcp::1234 打开远程调试端口,默认使用tcp协议1234端口,若不想使用1234端口,则可以使用-gdb tcp:xxxx来取代-s选项
指令的作用是在开始的时候就让CPU停止在启动的那一刻,我们可以看到如下的界面:
此时在刚才新建的那个终端窗口输入gdb进入调试模式:
gdb (gdb)filelinux-3.18.6/vmlinux # 在gdb界面中targe remote之前加载符号表 (gdb)target remote:1234 # 建立gdb和gdbserver之间的连接,按c 让qemu上的Linux继续运行 (gdb)breakstart_kernel # 断点的设置可以在target remote之前,也可以在之后
可以看到进入gdb调试界面
按c键继续执行到start_kernel()函数
然后我们可以使用list命令常看停止断点的源代码:如下图所示就是start_kernel()部分的代码
MenuOS的网络功能
cd ~/LinuxKernel git clone https://github.com/mengning/linuxnet.git cd linuxnet/lab2 make cd ../../menu/ sudo gedit Makefile make rootfs cd ~/LinuxKernel cd linuxnet/lab3 sudo gedit Makefile make rootfs
TCP连接正常
相关推荐
lhtzbj 2020-08-13
zmjzhangmj 2020-05-01
猫师 2020-03-16
zhongcanw 2020-02-03
amazingbo 2020-01-06
Proudoffaith 2019-12-12
菇星獨行 2019-12-10
sunln00 2019-12-10
LUOPING0 2019-12-06
zhongcanw 2019-12-06
RayDon 2011-03-04
fouweng 2011-08-27
wenxiHuang 2011-06-01
柯利南 2011-05-31
七夕小子 2019-11-04
farwang 2011-04-01
jiangxinyu 2011-10-06
IZZY 2012-02-02
yishizhu 2011-11-29