zoukankan      html  css  js  c++  java
  • 构建调试Linux内核网络代码的环境MenuOS系统

            本次实验在实验楼(https://www.shiyanlou.com/courses/1198)完成,已经配置配置好实验所需的环境(基于3.18.6的Linux内核环境)。

    •  运行MenuOS

          使用实验楼中的Xfce终端,

    $ cd ~/LinuxKernel/
    $ qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img

     

    • 将网络通信程序的服务端集成到 MenuOS 系统中

      接下来我们需要将 C/S 方式的网络通信程序的服务端集成到 MenuOS 系统中,成为 MenuOS 系统的命令 replyhi。

      使用git将实验内容克隆过来

    • $ cd ~/LinuxKernel  
      $ git clone https://github.com/mengning/linuxnet.git

       然后进入 menu,运行 make rootfs,脚本就可以帮助我们自动编译、自动生成根文件系统,还会帮我们运行起来 MenuOS 系统。

     

        接下来测试集成的命令输入replyhi(命令 replyhi,功能是回复 hi 的 TCP 服务.),和hello

    • 进行跟踪调试

     新打开一个终端输入:

    $ cd LinuxKernel
    $ qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S

    接下来再新打开一个终端,执行gdb

    # 打开 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    

     

        上面将 sys_socketcall 设为断点跟踪,最终结果如下。

  • 相关阅读:
    半条命2引擎:Source 关于Multiplayer Networking
    关于毕设3DGPSR程序bug修改
    My 2D SketchBased 3D Shape Retrieval
    Manifold Harmonics Transform BY ARPACK++
    c语言错误代码
    C语言system函数用法
    win7下开启梦幻桌面
    Win7与xp双系统的安装
    C 语言中的控制结构
    Win7下安装xp虚拟机
  • 原文地址:https://www.cnblogs.com/smjsoftware/p/12031166.html
Copyright © 2011-2022 走看看