1

我正在尝试设置 KGDB 来调试我们的 arm64 内核。我的设置是目标在内核 3.14 上运行(一些 arm64 kgdb 补丁向后移植),在主机上我使用 linaro 工具链 4.8 aarch64-linux-gnu-gdb,每当我发出:

target remote /dev/ttyS0

我收到错误消息:

Remote 'g' packet reply is too long:

我在这个问题上搜索了很多,但没有一个适合我。我认为这个问题是 arm64 特有的。这里有没有人知道如何进行?

4

1 回答 1

1

启发了这里的问题: https ://answers.launchpad.net/gcc-arm-embedded/+question/193249

我找到了解决方案。发行前

target remote /dev/ttyS0

请执行下列操作

set tdesc filename aarch64.xml

我从最新的 gdb 源代码中获取了 aarch64.xml:gdb-7.8/gdb/features/aarch64.xml。通过这样做,我们指示 GDB 客户端接受比最初预期更多的寄存器。

根本原因似乎是 GDB 客户端只需要 31 个寄存器和寄存器 SP、PC、CPSR,但内核 gdb 存根不仅返回这些寄存器,还返回其他 FPU 寄存器,这会导致错误消息:

Remote 'g' packet reply is too long:
于 2014-12-11T19:27:33.013 回答