码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2019-12-10 14:49:30      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:info   arch   窗口   inf   tcp连接   LElinux   xxxx   alt   加载符号   

首先先来构建一个简单的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连接正常

 

 

 

 

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

标签:info   arch   窗口   inf   tcp连接   LElinux   xxxx   alt   加载符号   

原文地址:https://www.cnblogs.com/xqqu/p/12016522.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!