我想通过串行 ttyS0 从我的 64 位 suse 机器上调试 MIPS linux 驱动程序。使用的 gdb 在 LAN 上可以更好地用于调试应用程序,但不能通过串行方式使用 kgdb。我使用此页面和其他一些页面开始调试,但没有最终结果。
我的内核是使用以下设置编译的:
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"
如果我运行 gdb:
gdb vmlinux
(gdb) set remotebaud 115200
(gdb) set debug remote 1
(gdb) target remote /dev/ttyS0
我可以观察到以下输出:
输出(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
输出(远程目标):
+$?#3f09n+#9a$Hg0#df+09
没有更多的事情发生!!!
我也测试了 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 .....)
sysrq 是否正常运行?
有什么我错过的吗?
有没有办法在我的远程设备上测试正在运行的 kgdb?