zoukankan      html  css  js  c++  java
  • 系统调用的三层机制(下)

    2018-2019-120189224 《庖丁解牛Iinux内核分析》第五周学习总结

    1.在前两章的基础上进行本次实验,因此需要删除menu克隆已经集成好前面两个命令的新版本的的menu

    cd ~/LinuxKernel/
    cd menu
    rm -rf menu
    git clone https://github.com/mengning/menu.git 
    make rootfs//自动编译并生成根文件系统
    

    2.MenuOS系统增加命令
    test.c中增加命令函数Time、TimAsm和MenuConfig

    重新编译启动Menu

    输入Time命令,运行成功

    gdb跟踪调试系统调用函数sys_time

    1.返回LinuxKernel目录下,启动内核

    cd ..
    qemu -kernel linux_3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -S -s
    

    2..打开一个新的命令窗口,启动gdb,加载内核建立连接cd LinuxKernel/ gdb file linux-3.18.6/vmlinux target remote:1234

    3.设置断点b sys_time,按c继续运行,运行到断点停止。time系统调用的是sys_time函数,因此在sys_time函数处设置断点,我们可以看到的就是输入time命令后没有反应

    4.sys_time是在宏中实现的,无法直接看到。用```list``命令列出sys_time对应代码

    5.单步执行gdb调试

    6.system_call代码分析

    代码调试中的问题和解决过程

    • 问题:新增命令后编译出错
    • 解决方案:test.c中没有加头文件<time.h>
  • 相关阅读:
    python爬虫之Scrapy框架
    Web自动化测试工具:Selenium
    多线程爬取新闻标题和链接
    python里更推荐使用的requests库
    python豆瓣的简单爬虫
    4 个好用的 Linux 监控工具
    8个你会爱上的 VS Code 扩展
    SpringBoot 构建 Docker 镜像的 3 种方式
    OAuth2 图解
    Prometheus + Grafana 监控 SpringBoot
  • 原文地址:https://www.cnblogs.com/20189224sxy/p/9978283.html
Copyright © 2011-2022 走看看