Home Articles

gdb远程交叉调试失败,“远程'g'数据包回复太长”

Asked
Viewed 1476 times
15

我有远程调试的问题 .

主机:笔记本电脑intel i5与ubuntu 10.10 x86目标:飞思卡尔iMX35(iMX35 PDK)第11组开发环境:Qt Creator 2.1RC和Qt4.7.1库 . 路径中的Arm编译器:/opt/freescale/usr/local/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin

arm-none-linux-gnueabi-gcc-4.1.2 arm-none-linux-gnueabi-objdump arm-none-linux-gnueabi-addr2line arm-none-linux-gnueabi-gccbug
arm-none-linux-gnueabi-ranlib arm-none-linux-gnueabi-ar
arm-none-linux-gnueabi-gcov arm-none-linux-gnueabi-readelf arm-none-linux-gnueabi-as
arm-none-linux-gnueabi-run arm-none-linux-gnueabi-c
arm-none-linux-gnueabi-size arm-none-linux-gnueabi-c filt
arm-none-linux-gnueabi-gprof arm-none-linux-gnueabi-strings arm-none-linux-gnueabi-cpp arm-none-linux-gnueabi-ld
arm-none-linux-gnueabi-strip arm-none-linux-gnueabi-g
arm-none-linux-gnueabi-nm arm-none-linux-gnueabi-gcc
臂无-Linux的gnueabi-objcopy命令

目标是调试使用Qt创建的项目 . 所以我只创建了一个Qt Quick Project - > Qt Quick Application,它创建了一个简单的Hello World应用程序(C / Qml),我交叉编译它(在调试或发布中),它在目标上工作正常 . 所以我很确定交叉编译与我将告诉你的问题无关 .

我下载了gdb 7.2并执行了以下操作:

$ export PATH = / opt / freescale / usr / local / gcc-4.1.2-glibc-2.5-nptl-3 / arm-none-linux-gnueabi / bin:$ PATH $ cd / home / elux / iMX35 / gdb -7.2 / $ ./configure --target = arm-none-linux-gnueabi --build = i686 $ make $ sudo make install $ export CC = arm-none-linux-gnueabi-gcc $ export LD = arm-none- linux-gnueabi-ld $ cd gdb / gdbserver / $ ./configure --build = i386 --host = arm-none-linux-gnueabi --target = arm-none-linux-gnueabi $ make $ sudo cp gdbserver / home / elux / MX35 / ltib / rootfs / usr / bin /(将gdbserver复制到目标)

然后在目标上:

$ gdbserver 10.10.10.1:4000创建测试过程测试; pid = 2194在端口4000上侦听

在目标上:

$ arm-none-linux-gnueabi-gdb测试(测试是在调试模式下交叉编译的Qt Creator)GNU gdb(GDB)7.2版权所有(C)2010 Free Software Foundation,Inc . 许可证GPLv3:GNU GPL版本3或稍后http://gnu.org/licenses/gpl.html这是免费软件:您可以自由更改并重新分发它 . 在法律允许的范围内,不提供任何担保 . 输入“show copying”和“show warranty”了解详细信息 . 此GDB配置为“--host = i686 --target = arm-none-linux-gnueabi” . 有关错误报告说明,请参阅:http://www.gnu.org/software/gdb/bugs / ...从/ home / elux / iMX35 / ltib / rpm / BUILD / qt-everywhere中读取符号 - opensource-src -4.7.1 /platform/Test-build-arm/Test...done . (gdb)target remote 10.10.10.2:4000使用10.10.10.2:4000远程调试警告:无法解析XML目标描述;编译时禁用XML支持警告:无法找到动态链接器断点功能 . GDB将无法调试共享库初始化程序并跟踪显式加载的动态代码 . 0x400007e0在? ()(gdb)

(gdb)设置solib-absolute-prefix / home / elux / iMX35 / ltib / rootfs /从/home/elux/iMX35/ltib/rootfs/lib/ld-linux.so.3..done读取符号 . /home/elux/iMX35/ltib/rootfs/lib/ld-linux.so.3的已加载符号

(GDB)集架构的ARMv5TE目标结构被假定为用于ARMv5TE远程的“g”数据包应答过长:00000000a7ee8ebe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0ed8ebe00000000e007004010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000(GDB)b主远程的“g”数据包应答过长:00000000a7ee8ebe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0ed8ebe00000000e007004010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

你知道这个问题与什么有关吗?我该如何解决?

3 Answers

  • 15

    我能够使用gdb-multiarch代替并解决了我的问题 .

  • 10

    我试图在运行Ubuntu 11.10 64bit的i5机器上调试飞思卡尔ARM时遇到同样的问题 .

    对我有用的修复是在配置gdb时指定--with-expat标志 . 我还必须安装libexpat1-dev包 .

    Explanation here

  • 7

    当我最近在Ubuntu 12.04(x86_64)上遇到这个并以不同的方式解决它时,我想我会发表评论 . 在这种情况下的踢球者是Ubuntu似乎有启用libexpat的gdb . 有些修修补补,这解决了我:

    设置架构i386:x86-64:intel

    因此,当架构不匹配时,可能会出现这种情况 .

Related