环境说明

硬件:

  • 一台幽兰(用来运行kgdb主机端)
  • 一台幽兰(用作被调试的机器)
  • 挥码枪(这里使用挥码枪仅使用usb转串口功能,也可以使用其他串口连接工具)

1. 确认内核配置

在开始调试之前,请确保您的被调试机器内核已经开启了KGDB配置。您可以通过检查内核配置文件来确认是否已经启用了相应的配置选项。(注:如果使用太乙版本内核,则默认支持KGDB,双剑2未开启

zcat /proc/config.gz|grep KGDB

请确认以下配置选项是否已经开启:

CONFIG_KGDB=y
CONFIG_KGDB_HONOUR_BLOCKLIST=y
CONFIG_KGDB_SERIAL_CONSOLE=y
CONFIG_KGDB_KDB=y

2. 修改启动参数

被调试机器需要UEFI才可以使用GRUB引导,如使用Uboot则需要更换为UEFI。
在被调试的机器中,需要修改 GRUB 配置文件以添加内核启动参数。您可以通过编辑 /boot/grub/grub.cfg 文件来实现此操作。请确保将以下参数添加到内核启动选项中:

kgdboc=ttyFIQ0,1500000 nokaslr

3. 重新启动被调试的机器

完成对 GRUB 配置文件的修改后,请重新启动被调试的机器,以使新的内核启动参数生效。

4. 连接挥码枪

在调试过程中,您需要将挥码枪sd端连接到被调试的机器上,并将 USB 端将其连接到主机端。

5.打开 GDB 调试

在主机端,打开命令行终端,并使用 GDB 工具连接到被调试的机器。您需要指定内核符号文件的路径。示例命令如下:

sudo gdb -s /home/geduer/vmlinux     #在本文中内核符号文件vmlinux放在了/home/geduer下面
target remote /dev/ttyACM0           #在这里ttyACM0并不固定,可以通过命令 ls /dev/tty* 查看

6. 进入调试状态

在被调试的机器上,打开命令行终端并输入以下命令,以将其进入调试状态:

echo g > /proc/sysrq-trigger

7.开始调试

在主机端GDB页面,输入bt ,可以看到如下类似内容

作者:zuoyingying  创建时间:2024-05-10 14:17
最后编辑:zuoyingying  更新时间:2024-10-15 11:09