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

构建MenuOS系统

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

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

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

9e006c8062d6ee9921a8d307c506859f.png

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

cd linuxnet

make rootfs

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

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

b182e6166d477ece12039a7796067e0e.png

测试QEMU

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

MenuOS>> replyhi

# Please input hello...

MenuOS>> hello

99910645f58eac915ea0063240805805.png

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

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

b83775e615f7a276eb0826d9fdba3a7d.png

3.重新make rootfs,启动QEMU

1f009d78b0a13fcc669c8a2764e9114a.png

4.启动调试,连接到server

gdb

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

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

7e5d0aa4474fb05c891bcaf848596b0f.png

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

(gdb) break start_kernel

(gdb) break sys_socketcall

8337d8508c4e55c1e6dd52ab1be83345.png

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

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

构建调试Linux内核网络代码的环境MenuOS系统 一.前言 这是网络程序设计的第三次实验,主要是学习自己编译linux内核,构建一个具有简易功能的操作系统,同时在系统上面进行调试linux内核网络 ...

构建调试Linux内核网络的环境Menuos系统

一.Linux内核源码下载 下载网址为:https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.1.tar.xz 下载完成后放入home/Menu ...

在qemu环境中用gdb调试Linux内核

简介 对用户态进程,利用gdb调试代码是很方便的手段.而对于内核态的问题,可以利用crash等工具基于coredump文件进行调试.其实我们也可以利用一些手段对Linux内核代码进行gdb调试,qem ...

使用QEMU调试Linux内核代码

http://blog.chinaunix.net/uid-20729583-id-1884617.html http://www.linuxidc.com/Linux/2014-08/105510. ...

Gdb远程调试Linux内核遇到的Bug

知识共享许可协议本作品采用知识共享署名 4.0 国际许可协议进行许可.转载保留声明头部与原文链接https://luzeshu.com/blog/gdb-bug 本博客同步在http://www.cn ...

用qemu+gdb tcp server+CDT调试linux内核启动-起步

用qemu+gdb tcp server+CDT调试linux内核启动-起步 说明: 环境信息与 用virtualbox+模拟串口+CDT调试linux内核 TCP IP协议栈-起步 提到的一样,并且 ...

Linux内核--网络栈实现分析(三)--驱动程序层+链路层(上)

本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7497260 更多请看专栏,地址 ...

Linux内核--网络栈实现分析(一)--网络栈初始化

本文分析基于内核Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7488828 更多请看专栏, ...

Linux内核--网络栈实现分析(二)--数据包的传递过程--转

转载地址http://blog.csdn.net/yming0221/article/details/7492423 作者:闫明 本文分析基于Linux Kernel 1.2.13 注:标题中的”(上 ...

随机推荐

Oracle Database 12c Data Redaction介绍

什么是Data Redaction Data Redaction是Oracle Database 12c的高级安全选项之中的一个新功能,Oracle中国在介绍这个功能的时候,翻译为“数据编纂”,在EM ...

如何在linux下解压缩rar和zip格式的文件压缩包

转载:http://oldboy.blog.51cto.com/2561410/597515 使用apt-get安装:  sudo apt-get install  rar  zip rar使用: 将 ...

Dijkstra算法 最短路径 (部分)

void Dijkstra(int n, int v, int *dist, int *prev, int c[maxnum][maxnum]) {     bool s[maxnum];       ...

tomcat虚拟主机虚拟目录配置

今天着实要记上一笔,需要配置tomcat虚拟目录的问题 一 首先看两个名词 appBase -- 顾名思义 就是你app所在的目录,目录下面的子目录将自动被部署为应用:war被解压并部署 docBas ...

angular : $location & $state(UI router)的关系

次序:angular 的 location会先跑 $rootScope.$on("$locationChangeStart", function (scope, newUrl, o ...

array_slice()函数造成的一次sql注入

HDwiki6.0 sql注入 下载连接http://kaiyuan.hoodong.com/download/ 漏洞出现在\control\edition.php的docompare()函数 !de ...

AngularJS中$interval和$timeout的使用

我们在项目中会出现定时刷新,延迟加载等多种场景. 接下来就看$interval和$timeout的使用 $interval可用于定时任务,我们只需在controller注入$interval即可使用. ...

webgl之3d动画

之前的几篇文章都是静态的,而这里主要介绍如何使物体动起来,并且学会使用性能监视器来监测性能. 而如果要让物体动起来,实际上我们是有两种方法的,第一种是让物体真的动起来,另外一种是让摄像机动起来这样物体 ...

mfc this指针

知识点 this指针 this指针使用 一.this指针 this指针可以看成是实例化对象的地址.在类成员函数里访问成员变量,其实也隐含使用了this指针. 在 Tdate中this->相当于T ...

DBGrid添加行号编写笔记

procedure TForm1.ClientDataSet1NewRecord(DataSet: TDataSet); begin ShowMessage('你好'); ClientDataSet1 ...

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值