我有远程调试的问题。
主机:带有 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
目标是调试使用 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
这是免费软件:您可以自由更改和重新分发它。
在法律允许的范围内,不提供任何保证。键入“显示复制”
和“显示保修”以了解详细信息。
此 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 在?? ()
(gdb)
和
(gdb) set 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
The target architecture is assumed to be armv5te
Remote 'g' packet reply is too long: 00000000a7ee8ebe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0ed8ebe00000000e007004010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000(gdb) b main
Remote 'g' packet reply is too long: 00000000a7ee8ebe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0ed8ebe00000000e007004010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
你知道这个问题与什么有关吗?我该如何解决?