Remote 'g' packet reply is too long问题的解决

GDB7.6 Remote ‘g’ packet reply is too long

在用Eclipse调试OpenWrt程序的时候,gdb traces中总是出现这样的一个错误,导致无法调试,令人百思不得其解。

771,735 28^error,msg="Remote 'g' packet reply is too long: 00000000f8ffffffecceea7740b4ff77010000004\
46eff7f4c6eff7f2067e17f0000000046b8000000408a860200000000031c7fffffffff00000000c816e977226fff7f1c0b4\
000906dff7f0088e777f8208900fcce4500000044001cdc450087040000ac8a4000fefcf87c00000000a003eb77c86cff7fc\
86cff7f4c17e97713a40001a070230029000000a0c1e47724008010bc8a4000fffffffffffffffffffffffffffffffffffff\
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\
fffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000"\

网上对此说法多数聚焦到一个问题:cpu arch的问题,导致register读取了超长的信息,但解决方案莫衷一是。

于是做了一个大胆的假设:既然是超长了,如果忽略这些信息会怎样呢?

so修改gdb/remote.c文件,定位到:

static void process_g_packet (struct regcache *regcache)函数,6113行,屏蔽对buf_len的判断。

image

 Remote 'g' packet reply is too long问题的解决_第1张图片

改了之后

make toolchain/gdb/install

如果显示is up to date

先make toolchain/gdb/clean(注意clean之后,remote.c将会重新生成)

然后再 make toolchain/gdb/install

哈哈,问题解决!

 

但这确实不是一个好的解决方案。还望知道其中具体缘由的童鞋告知一二。

后记: 在这里 http://x-slam.com/da_jian_eclipse_qemu_gdb_diao_shi_linux_kernel_huan_jing

有关于该问题的解决方案:

Remote ‘g’ packet reply is too long: d85f8780ffffffff88……
省略号(……)表示后面还有一长串16进制数,解决的方法是在进行gdb操作前先在(gdb)后面执行如下语句:
set architecture i386:x86-64:intel
请根据实际情况配置,这个问题是GDB调试64位Kernel时才有的。该作者机器上有如下可选参数:
(gdb) set architecture
Requires an argument. Valid arguments are i386, i386:x86-64, i386:x64-32, i8086, i386:intel, i386:x86-64:intel, i386:x64-32:intel, auto.

你可能感兴趣的:(OpenWrt)