分析system_call中断处理过程

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

  • 启动调试内核

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

image

  • gdb 调试

另开 shell

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

image

image

  • 系统启动

image

  • 设置断点 sys_chmod

(gbd)b sys_chmod

image

  • 执行命令 chmod

image

  • 触发 gdb 中断

image

  • 单步执行

(gbd) s

image

  • 继续执行

(gbd) c

image

  • 系统调用完成,返回

image

##system_call中断处理过程图解

image