linux 远程'g'数据包回复太长aarch64 arm64

fcg9iug3  于 12个月前  发布在  Linux
关注(0)|答案(2)|浏览(115)

我试图设置KGDB来调试我们的arm 64内核。我的设置是目标运行在内核3.14上(带有一些arm 64 kgdb补丁),在主机上我使用linaro工具链4.8 aarch 64-linux-gnu-gdb,每当我发出:

target remote /dev/ttyS0

字符串
我收到错误消息:

Remote 'g' packet reply is too long:


我在谷歌上搜索了很多关于这个问题的信息,但没有一个对我有用。我认为这个问题是针对arm 64的。这里有人知道如何进行吗?

vqlkdk9b

vqlkdk9b1#

在这里启发了这个问题:https://answers.launchpad.net/gcc-arm-embedded/+question/193249
我找到解决办法了。在发行之前

target remote /dev/ttyS0

字符串
执行以下操作

set tdesc filename aarch64.xml


我从最新的gdb源代码gdb-7.8/gdb/features/aarch64.xml中获取了aarch64.xml。通过这样做,我们指示GDB客户端接受比它最初期望的更多的寄存器。
根本原因似乎是GDB客户端只需要31个寄存器和寄存器SP,PC,CPSR,但内核gdb存根不仅返回这些寄存器,还返回其他FPU寄存器,这导致错误消息:

Remote 'g' packet reply is too long:

rkue9o1l

rkue9o1l2#

当gdb(客户端)连接时,gdbserver通常会发送远程目标的信息。由于某种原因,您的GDB无法读取xml。这可能是因为目标架构太模糊,它不知道它,或者GDB无法读取xml文件。后者更常见,因为它在编译期间没有配置xml支持。

相关问题