我遇到远程调试问题。
主机:笔记本电脑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
手臂-NONE-Linux的gnueabi,作为
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
arm-none-linux-gnueabi-objcopy
目标是调试使用Qt创建的项目。 所以我只创建了一个Qt快速项目 - > Qt快速申请 它创建了一个简单的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
这是免费软件:您可以自由更改并重新分发它 在法律允许的范围内,不提供任何担保。输入“显示复制”
并详细说明“保修” 此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)目标远程10.10.10.2:4000
使用10.10.10.2:4000进行远程调试
警告:无法解析XML目标描述;在编译时禁用了XML支持
警告:无法找到动态链接器断点功能。
GDB将无法调试共享库初始化程序
并跟踪明确加载的动态代码。
0x400007e0在? ()
(gdb)
和
(gdb)set 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
你知道这个问题与什么有关吗?我该如何解决?
答案 0 :(得分:16)
当我最近在Ubuntu 12.04(x86_64)上遇到这个并以不同的方式解决它时,我想我会发表评论。在这种情况下的踢球者是Ubuntu似乎有启用libexpat的gdb。有些修修补补,这解决了我:
设置架构i386:x86-64:intel
因此,当架构不匹配时,可能会出现这种情况。
答案 1 :(得分:11)
我能够使用gdb-multiarch来解决我的问题。
答案 2 :(得分:7)
我在尝试在运行Ubuntu 11.10 64bit的i5机器上调试飞思卡尔ARM时遇到了同样的问题。
对我有用的修复是在配置gdb时指定 --with-expat 标志。我还必须安装 libexpat1-dev 包。