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

构建MenuOS系统

1.将指定文件拷贝到本地:

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

此过程可能需要输入github账号和密码。

e3b02330990991f981e7a2648b7c99df.png

2.进入目录linuxnet,使用make命令编译根文件系统:

cd linuxnet

make rootfs

3.在Makefile文件中有一条指令用于开启menu系统(不需要自己输入):

qmenu -kernel ../../linux-3.18.6/arch/x86/bzImage -initrd ../rootfs.img

d8c6f622aa4ac1b3ef9ce10a9323fd5c.png

测试QEMU

1.在QEMU中完成TCP客户端和服务器发送和接收hello/hi以验证MenuOS正常工作:

MenuOS>> replyhi

# Please input hello...

MenuOS>> hello

2db89907f8972ff5aabd64dceb5accdf.png

结果显示TCP客户端和服务器正常工作,打印出了预期的信息

2.修改Makefile内容,rootfs标签下启动QEMU的命令尾部添加-s

42895bbf3fba31a266c7185f7712f5af.png

3.重新make rootfs,启动QEMU

26f00b6c2000d6f016372b8b82c2f869.png

4.启动调试,连接到server

gdb

(gdb) file ../../linux-3.18.6/vmlinux

(gdb) target remote:1234 # 连接到gdbserver

8df8deb018c342b7e6cc87063b469c96.png

5.设置断点,验证gdb对start_kernel和sys_socketcall这两个内核函数的跟踪是否可行

(gdb) break start_kernel

(gdb) break sys_socketcall

7674c29fecf190b5bb5578301e8f3966.png

结果显示gdb可以追踪到start_kernel函数,断点在init/mian.c的501行;也可以追踪到sys_socketcall函数,断点在net/socket.c文件的2492行

b739ec46bb5c46d9c0aa4ce35ba1ea56.png

关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。

本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。

[构建调试Linux内核网络代码的环境MenuOS系统]http://www.zyiz.net/tech/detail-96385.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值