如何在远程机器上调试 Linux 内核?

How to debug Linux Kernel on a remote machine?

如何调试远程机器上的自定义 Linux 内核?

我有一台带有定制 Linux 内核的远程机器,最初来自 5.6.8。内核下的系统是运行成我要修复的问题。与 kgdb 相关的选项是

CONFIG_KGDB=y
CONFIG_KGDB_SERIAL_CONSOLE=y
# CONFIG_KGDB_TESTS is not set
CONFIG_KGDB_LOW_LEVEL_TRAP=y
CONFIG_KGDB_KDB=y

kgdboc 模块是内置编译的。 documentation of kgdb 描述了如何使用带有串口的终端。这是它在远程机器上的配置方式:

root@remote-pc:# cat /sys/module/kgdboc/parameters/kgdboc
ttyS0,115200

使用ssh我发出

root@remote-pc:~# echo g > /proc/sysrq-trigger

在 运行 gdb vminux 之后,我应该使用哪个端口连接到远程内核?

(gdb) target remote remote-pc:__what_port?__

您无法通过串行端口连接到 字面上的 远程计算机。您要使用的是 KGDB Over Ethernet (kdgboe)。参见 How to use kgdb over ethernet (kgdboe)?