我试图设置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的。这里有人知道如何进行吗?
vqlkdk9b1#
在这里启发了这个问题:https://answers.launchpad.net/gcc-arm-embedded/+question/193249我找到解决办法了。在发行之前
字符串执行以下操作
set tdesc filename aarch64.xml
型我从最新的gdb源代码gdb-7.8/gdb/features/aarch64.xml中获取了aarch64.xml。通过这样做,我们指示GDB客户端接受比它最初期望的更多的寄存器。根本原因似乎是GDB客户端只需要31个寄存器和寄存器SP,PC,CPSR,但内核gdb存根不仅返回这些寄存器,还返回其他FPU寄存器,这导致错误消息:
型
rkue9o1l2#
当gdb(客户端)连接时,gdbserver通常会发送远程目标的信息。由于某种原因,您的GDB无法读取xml。这可能是因为目标架构太模糊,它不知道它,或者GDB无法读取xml文件。后者更常见,因为它在编译期间没有配置xml支持。
2条答案
按热度按时间vqlkdk9b1#
在这里启发了这个问题:https://answers.launchpad.net/gcc-arm-embedded/+question/193249
我找到解决办法了。在发行之前
字符串
执行以下操作
型
我从最新的gdb源代码gdb-7.8/gdb/features/aarch64.xml中获取了aarch64.xml。通过这样做,我们指示GDB客户端接受比它最初期望的更多的寄存器。
根本原因似乎是GDB客户端只需要31个寄存器和寄存器SP,PC,CPSR,但内核gdb存根不仅返回这些寄存器,还返回其他FPU寄存器,这导致错误消息:
型
rkue9o1l2#
当gdb(客户端)连接时,gdbserver通常会发送远程目标的信息。由于某种原因,您的GDB无法读取xml。这可能是因为目标架构太模糊,它不知道它,或者GDB无法读取xml文件。后者更常见,因为它在编译期间没有配置xml支持。