构建调试Linux内核网络代码的环境MenuOS系统
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了构建调试Linux内核网络代码的环境MenuOS系统,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1547字,纯文字阅读大概需要3分钟。
内容图文
![构建调试Linux内核网络代码的环境MenuOS系统](/upload/InfoBanner/zyjiaocheng/945/013ec3d28c984adfb1520e477f26dc62.jpg)
实验环境
实验楼(实验楼每次实验有时间限制,本次实验并非一次性做完的,所以截图上显示的时间会有一些错乱。)
初识 MenuOS 系统
我们已经在 LinuxKernel 目录构建好了基于 3.18.6 的内核环境,可以使用实验楼的虚拟机打开 Xfce 终端(Terminal), 运行 MenuOS 系统。
将网络通信程序的服务端集成到 MenuOS 系统中
接下来我们需要将 C/S 方式的网络通信程序的服务端集成到 MenuOS 系统中,成为 MenuOS 系统的命令 replyhi。
实际上我们已经给大家集成好了,我们 git clone 克隆一个 linuxnet.git,进入 lab2 目录执行 make 可以将我们集成好的代码 copy 到 menu 项目中。
然后进入 menu,我们写了一个脚本 rootfs,运行 make rootfs,脚本就可以帮助我们自动编译、自动生成根文件系统,还会帮我们运行起来 MenuOS 系统。
详细命令如下:
其中我们增加了命令 replyhi,功能是回复 hi 的 TCP 服务.
使用跟踪分析 ~/Linux 内核的启动过程的 -s 和 -S 选项启动 MenuOS 系统:
$ 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)-s
shorthand for -gdb tcp::1234 若不想使用 1234 端口,则可以使用 -gdb tcp:xxxx 来取代 -s 选项
接下来您就可以参照前面“跟踪分析 Linux 内核的启动过程的具体操作方法”进行跟踪调试了,
只是我们 socket 接口使用的是系统 sys_socketcall,可以将 sys_socketcall 设为断点跟踪看看。
# 打开 GDB 调试器 $ gdb
# 在 GDB 中输入以下命令:
# 在 gdb 界面中 targe remote 之前加载符号表
(gdb)file linux-3.18.6/vmlinux
# 建立 gdb 和 gdbserver 之间的连接
(gdb)target remote:1234
# 断点的设置可以在target remote之前,也可以在之后
(gdb)break start_kernel
# 按 c 让qemu上的Linux继续运行
(gdb)c
?
内容总结
以上是互联网集市为您收集整理的构建调试Linux内核网络代码的环境MenuOS系统全部内容,希望文章能够帮你解决构建调试Linux内核网络代码的环境MenuOS系统所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。