将GDB通过串口连接到KGDB构建内核的问题

use*_*481 7 c linux kernel linux-kernel kgdb


我想通过串口ttyS0从我的64位suse机器调试MIPS linux驱动程序.使用的gdb通过LAN调试应用程序而不是kgdb over serial.我使用此页面和其他一些内容来启动调试,但没有最终结果.

我的内核使用以下设置编译:

CONFIG_MAGIC_SYSRQ=y
CONFIG_HAVE_ARCH_KGDB=y
CONFIG_KGDB=y
CONFIG_KGDB_SERIAL_CONSOLE=y
# CONFIG_KGDB_TESTS is not set
CONFIG_CMDLINE="kgdboc=ttyS0,115200"
Run Code Online (Sandbox Code Playgroud)

如果我运行gdb:

gdb vmlinux
(gdb) set remotebaud 115200
(gdb) set debug remote 1
(gdb) target remote /dev/ttyS0
Run Code Online (Sandbox Code Playgroud)

我可以观察以下输出:

输出(GDB_TERMINAL):

(gdb) target remote /dev/ttyS0
Remote debugging using /dev/ttyS0
Sending packet: $qSupported:qRelocInsn+#9a...Ack
Timeout in mid-packet, retrying
Timed out.
Timed out.
Ignoring packet error, continuing...
Packet qSupported (supported-packets) is supported
warning: unrecognized item "qSupported:qRelocIns" in "qSupported" response
Sending packet: $Hg0#df...Nak
Sending packet: $Hg0#df...Ack
Packet received: Hg0
Sending packet: $?#3f...Packet instead of Ack, ignoring it
Ack
Timed out.
Timed out.
Timed out.
Ignoring packet error, continuing...
Sending packet: $Hc-1#09...Nak
Sending packet: $Hc-1#09...Ack
Reply contains invalid hex digit 36
Run Code Online (Sandbox Code Playgroud)

输出(REMOTE_TARGET):

+$?#3f09n+#9a$Hg0#df+09
Run Code Online (Sandbox Code Playgroud)

没有更多的事情发生!

我也测试了sysrq但是提到的sysrq-option'g'似乎不适合!

echo b > /proc/sysrq-trigger 
#successfully reboot

echo g > /proc/sysrq-trigger 
#prints only the help message (SysRq : HELP : loglevel(0-9) reBoot Crash termin .....)
Run Code Online (Sandbox Code Playgroud)

sysrq是否正常运行?
有没有我错过的东西?
有没有办法测试我的远程设备上运行的kgdb?

小智 0

我知道这是 2 年前的事了,但我只是想说我的主板也有同样的问题,不幸的是它没有 LAN 接口来通过 TCP 连接使用 gdbserver。我不知道你是否能弄清楚这一点,但如果你的主板确实有 LAN 接口(或者你可以使用 USB 转以太网适配器构建一个接口),那么似乎可以通过它进行调试!