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

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

2. 给MenuOS增加命令

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

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

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 查看当前的系统调用

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

5:使用GDB 进行内核跟踪

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

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

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

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

总结

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

上一篇:jquery 排除重复


下一篇:JavaScript for in的缺陷