Linux 第五周 实验: 分析system_call中断处理过程

姬梦馨

原创博客

《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

使用gdb跟踪分析一个系统调用内核函数

1:克隆并自动编译MenuOS

a .强制删除menu (rm menu -rf)
b. 更新menu代码至最新版本(git clone https://github.com/mengning/menu.git)
c. rm menu -rf 强制删除原menu文件
d. make rootfs 运行自动编译脚本,生成根文件系统,启动MenuOS

 

2. 给MenuOS增加命令

test.c中main函数里: 增加MenuConfig
make rootfs

 

3:增加函数

 

int Getegid(int argc,char *argv[])

{
        gid_t gid;
gid = getegid (); printf(“gid=%d”,gid); return 0; } int GetegidAsm(int agrc,char *argv[]) { gid_t gid; gid = getegid (); asm volatile( “mov $0x32,%%eax\n\t” “int $0x80\n\t” “mov %%eax,%0\n\t” :”=m”(gid) ); printf(“gid=%d”,gid); return 0; }

 4. make roots 发现新增的命令或者  可以输入Help 查看当前的系统调用

5:使用GDB 进行内核跟踪

  

 

分析从system_call开始到iret结束之间的整个过程

总结

讲的是如何给内核添加新的系统调用命令,并用gdb进行跟踪调试,做了实践后对实验更加理解了, 而且自己画了流程图,又整理总结了思路。

posted @ 2016-03-25 21:19  偷影子的人  阅读(216)  评论(0编辑  收藏  举报