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

    构建MenuOS系统

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

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

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

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

    cd linuxnet
    make rootfs
    

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

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

    测试QEMU

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

    MenuOS>> replyhi
    # Please input hello...
    MenuOS>> hello
    

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

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

    3.重新make rootfs,启动QEMU

    4.启动调试,连接到server

    gdb
    (gdb) file ../../linux-3.18.6/vmlinux
    (gdb) target remote:1234    # 连接到gdbserver
    

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

    (gdb) break start_kernel
    (gdb) break sys_socketcall
    

    • 结果显示gdb可以追踪到start_kernel函数,断点在init/mian.c的501行;也可以追踪到sys_socketcall函数,断点在net/socket.c文件的2492行
  • 相关阅读:
    ubuntu14.04 允许root用ssh登录
    MySQL(Navicat)运行.sql文件时报错:[Err] 2006
    Ubuntu14.04 安装git
    Ubuntu14.04下安装redis
    ubuntu apt-get update 失败解决
    检出商品详情中的图片并替换url
    nohup和&后台运行,进程查看及终止
    ubuntu 的chmod 和 chown
    php5.4安装fileinfo扩展
    crontab
  • 原文地址:https://www.cnblogs.com/Mr-Tiger/p/11992061.html
Copyright © 2011-2022 走看看