KGDB,远程连接错误

时间:2018-08-20 11:06:31

标签: gdb kgdb

我对KGDB非常陌生,从主机连接目标时出现问题,出现以下错误。

(gdb) target remote /dev/ttyUSB0
Remote debugging using /dev/ttyUSB0
Ignoring packet error, continuing...
warning: unrecognized item "swreak" in "qSupported" response
warning: unrecognized item "ReloInsn" in "qSupported" response
warning: unrecognized item "QTread'
[3]kdb> " in "qSupported" response
Bogus trace status reply from target: qTStatus
...

我要遵循的程序是:

[Target] stty -F /dev/ttyS0 115200
[Host] stty -F /dev/ttyUSB0 115200
     

确保串行连接在两个方向上均正常工作。您可以使用:

[Host] cat /dev/ttyUSB0
[Target] echo 'from TARGET to HOST' > /dev/ttyS0

[Target] cat /dev/ttyS0
[Host] echo 'from HOST to TARGET' > /dev/ttyUSB0
     

您应该在机器的两侧看到消息。如果没有,那里   可能是电缆或驱动器上的一些问题。

     

编译内核

     

启用KGDB *,KGDB_SERIAL *,KGDB_USB *,DEBUG_INFO,DEBUG_INFO_DWARF4,   内核配置中的MAGIC_SYSRQ。编译并安装在TARGET上。

     

这里的主要目的是启用KGDB功能并保留调试   vmlinux中的信息。

     

agent-proxy设置

     

agent-proxy充当TARGET串行端口的代理。它分裂   用于多路复用的串行端口。一个用于主控制台I / O,   其他用于GDB会话。因此,我们可以同时工作。您   应该在HOST机器上运行agent-proxy。

git clone http://git.kernel.org/pub/scm/utils/kernel/kgdb/agent-proxy.git
cd agent-proxy ; make
./agent-proxy 5550^5551 0 /dev/ttyUSB0,115200
     

这将重定向:

     
      
  • 目标主机为主机:5550的控制台
  •   
  • TARGET的HOST:5551的kgdb监听端口
  •   
     

开始调试

     

首先,打开主控制台:

[Host] telnet localhost 5550
     

通过以下方式进入kdb模式:

[Target] echo ttyS0,115200 > /sys/module/kgdboc/parameters/kgdboc
[Target] dmesg | tail
     

(您应该看到KGDB:注册的I / O驱动程序kgdboc,否则为   失败)

[Target] echo g >/proc/sysrq-trigger
Host> gdb vmlinux
(gdb) target remote localhost:5551
Remote debugging using localhost:5551
kgdb_breakpoint () at kernel/debug/debug_core.c:1072
1072             wmb(); /* Sync point after breakpoint */
(gdb)

当我在目标任务中键入kgdb时,由于权限被拒绝而出现错误,如下所示

[3]kdb> kgdb
diag: -22: Permission denied

...,我希望您能按步骤给出明确的答案...,在此先感谢

1 个答案:

答案 0 :(得分:0)

diag: -22: Permission denied

该错误意味着您的内核中默认情况下对调试器功能的访问为prohibited。为了解锁调试器,您需要执行以下命令:

  

echo 1> / sys / module / kdb / parameters / cmd_enable

或添加内核启动参数:

  

kdb.cmd_enable = 1

更多信息here