分析system_call中断处理过程

分析system_call中断处理过程

使用gdb跟踪分析一个系统调用内核函数(以 sys_chmod为例)

  • 启动调试内核

qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S

分析system_call中断处理过程_第1张图片

  • gdb 调试

另开 shell

gdb
(gdb) file linux-3.18.6/vmlinux  #在 gdb 界面中 target remote之前加载符号表
(gdb) target remote :1234   #建立连接
(gdb) break start_kernel    #设置断点

分析system_call中断处理过程_第2张图片

分析system_call中断处理过程_第3张图片

  • 系统启动

分析system_call中断处理过程_第4张图片

  • 设置断点 sys_chmod

(gbd)b sys_chmod

image

  • 执行命令 chmod

分析system_call中断处理过程_第5张图片

  • 触发 gdb 中断

分析system_call中断处理过程_第6张图片

  • 单步执行

(gbd) s

分析system_call中断处理过程_第7张图片

  • 继续执行

(gbd) c

分析system_call中断处理过程_第8张图片

  • 系统调用完成,返回

分析system_call中断处理过程_第9张图片

system_call中断处理过程图解

分析system_call中断处理过程_第10张图片

版权声明:本文为博主原创文章,未经博主允许不得转载。

文章来源:http://blog.luoyuanhang.cn

你可能感兴趣的:(linux,内核,系统调用,跟踪)