内核配置需要添加编译信息。
建议关闭地址随机化,否则会出现gdb中无法在断点处停下来的情况(尤其是qemu中)。可以参考:https://blog.csdn.net/gatieme/article/details/104266966
在目标板上开启gdbserver模式(虚拟soc中加上gdb调试的选项);在host上启动gdb客户端后连接虚拟soc提供的gdb服务(终端不会有输出),命令如下:
在目标板的串口则会有对应的输出信息。
内核通过python脚本定义了一组gdb命令,可方便其对内核的调试,如通过该脚本可以打印dmesg,percpu变量,通过pid打印其对应的task_struct结构体等。
内核编译时要除了4.1的配置,还需要开启CONFIG_GDB_SCRIPTS支持。
编译后在linux内核主目录(vmlinux同级目录)下会生成文件:vmlinux-gdb.py。在gdb中可以读取该文件。
使用’apropos lx’查看常用的支持的扩展指令: