我有一个远程调试的问题。
主机:笔记本电脑,采用 Ubuntu 10.10 x86 操作系统,搭载 Intel i5 处理器。 目标设备:Freescale iMX35(iMX35 PDK),使用 Arm 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、
arm-none-linux-gnueabi-objcopy
我下载了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 Test 进程Test已创建;pid = 2194 正在监听端口4000
在目标上:
$ arm-none-linux-gnueabi-gdb Test (Test是在Qt Creator中以调试模式交叉编译的) GNU gdb (GDB) 7.2
版权所有 (C) 2010自由软件基金会
许可证 GPLv3+: GNU通用公共许可证版本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读取符号...完成。
(gdb) target remote 10.10.10.2:4000
使用10.10.10.2:4000进行远程调试
警告: 无法解析XML目标描述; XML支持在编译时被禁用
警告: 找不到动态链接器断点函数。
GDB将无法调试共享库初始化程序
和跟踪显式加载的动态代码。
0x400007e0 in ?? ()
(gdb)
并且
(gdb) 设置 solib-absolute-prefix /home/elux/iMX35/ltib/rootfs/
正在读取符号文件 /home/elux/iMX35/ltib/rootfs/lib/ld-linux.so.3...完成。
已加载 /home/elux/iMX35/ltib/rootfs/lib/ld-linux.so.3 的符号。
但是
(gdb) set architecture armv5te 目标架构被假定为armv5te 远程'g'包回复太长: 00000000a7ee8ebe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0ed8ebe00000000e007004010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 (gdb) b main 远程'g'包回复太长: 00000000a7ee8ebe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0ed8ebe00000000e007004010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 你知道这个问题是与什么相关的吗?我该如何解决它?
gdb-multiarch
软件包是最新的。 - Joey Allen