1. 简介
本文介绍的Kgdb调试方法是一种源码级的Linux内核调试器。使用Kgdb调试内核时,需要结合gdb一起使用,使用他们可以对内核进行单步调试,设置断点,观察变量、寄存器的值等。
本文仅简单介绍使用串口的Kgbd的流程(kgdboc方式),除此之外还网卡方式即kdgboe方式,不做介绍。
2. 步骤
2.1 cmdline 传参
修改uboot中的bootargs,增加如下
console=ttyS0,115200 kgdboc=ttyS0,115200"
2.2 kernel kgdboc config打开
CONFIG_KGDB=y
CONFIG_KGDB_KDB=y
2.3 关闭wdt
如果板子有打开wdt,需要关闭wdt
3. kgdboc host端调试
安装agent-proxy 虚拟串口,能够同时吐出log
$ git clone http://git.kernel.org/pub/scm/utils/kernel/kgdb/agent-proxy.git $ cd path_to_agent-proxy_Dir $ make
绑定串口,启动aget-proxy
$ sudo ./agent-proxy 2223^2222 localhost /dev/ttyUSB0,115200 &
连接到板子
$ telnet localhost 2223
配置KGDBoC
# echo ttyS0 > /sys/module/kgdboc/parameters/kgdboc
进入kdb 模式
# echo g > /proc/sysrq-trigger
进入kgdb模式
kdb> kgdb
host端另开一个窗口,进行如下操作:
$ /opt/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/aarch64-linux-gnu-gdb vmlinux
进入gdb
(gdb) target remote localhost:2222
即可进入kgdb调试了
评论