码迷,mamicode.com
首页 > 其他好文 > 详细

系统调用的三层机制(下)

时间:2018-11-18 18:11:14      阅读:320      评论:0      收藏:0      [点我收藏+]

标签:tar   uos   initrd   三层   输入   技术   remote   调用   解决方案   

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>

系统调用的三层机制(下)

标签:tar   uos   initrd   三层   输入   技术   remote   调用   解决方案   

原文地址:https://www.cnblogs.com/20189224sxy/p/9978283.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!