gdb调试kernel
kernel启动脚本
$ cat open.sh #!/usr/bin/bash qemu-system-x86_64 \ -kernel /home/deck/sn512/linux-7.0.12/arch/x86_64/boot/bzImage \ -m 4G \ -smp 4 \ -drive file=/home/deck/sn512/disk.raw,format=raw \ -append "root=/dev/sda rw console=ttyS0 init=/init nokaslr" \ -nographic -s -S
启动gdb,加载内核
(gdb) file /home/deck/sn512/linux-7.0.12/vmlinux
(gdb) target remote :1234
插入模块
insmod scull.ko
手动加载模块符号表
cat /sys/module/scull/sections/.text
(gdb) add-symbol-file /home/deck/ldd3_example/scull.ko 0xffffffffc0000000
自动加载模块符号表
(gdb) source kernel/scripts/gdb/linux-gdb.py
(gdb) lx-modules-load
加断点,当运行到scull_read函数时停止
(gdb) b scull_read
(gdb) c
(gdb) layout src
手动创建设备节点
cat /proc/devices | grep scull mknod /dev/scull0 c 247 0
gdb相关操作
bt # 打印调用栈
n # 执行下一步,遇到函数不进入
s # 执行下一步,遇到函数进入
ptype # 打印变量类型

浙公网安备 33010602011771号