Remote 'g' packet reply is too long 错误

在 用 kgdb 调试64位arm内核的时候,当一切准备停当,在aarch64-linux-gnu-gdb 下输入 target remote /dev/ttyUSB0 后,gdb报出Remote ‘g’ packet reply is too long 的错误。

(gdb) target remote /dev/ttyUSB0
Remote debugging using /dev/ttyUSB0
Remote 'g' packet reply is too long: b8b9a300c0ffffff01000000000000000000000000000000c0b9a300c0ffffff000000000000000008016f00c0ffffff825e9f00c0ffffff4b4744423a20456e746572696e67204bc07a753ac0ffffffffe0f50500000000800100000000000006000000000000006d5e9f00c0ffffff5f5e9f80c0ffffff1000000000000000e0911600c0ffffff0000000000000000000000000000000000009a00c0ffffff6700000000000000402d9a00c0ffffff0700000000000000000000000000000011000000000000008601000000000000040000000000000000406c00c0ffffff0040753ac0ffffff307d753ac0ffffff6c3a1100c0ffffff307d753ac0ffffffd4391100c0ffffff450100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

在网上找了很久,最后还是翻墙用google找到了正确的答案。
先说一下原因,在4.4内核的kgdb代码中,cpsr 寄存器的长度是64bit的,而在我用的aarch64-linux-gnu-gdb 中, cpsr 寄存器的长度被定义成32bit了,这样两边就无法匹配。正规的解决办法应该是下载最新的gdb,重新编译。但是编译gdb很麻烦,所以在stackoverflow上有人给出了一个简单的办法:
下载gdb源代码,然后把其中的aarch64-core.xml aarch64-fpu.xml aarch64.xml 这3个文件复制到你的工作目录下面,确保 aarch64-core.xml 中的cpsr 寄存器的长度为64位(我下的gdb7.8,这个问题还没有修复)

<reg name="cpsr" bitsize="64"/>

然后 在gdb 中,在执行 target remote /dev/ttyUSB0 之前,输入如下命令,以更新寄存器定义

set tdesc filename aarch64.xml

这样做了以后,就可以在64位的ARM内核上使用kgdb了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值