Удаленная перекрестная отладка gdb завершилась неудачей: "Удаленный ответ" g "слишком длинный"

У меня проблема с удаленной отладкой.

Host: ноутбук intel i5 с ubuntu 10.10 x86 Цель: плечо Freescale iMX35 (iMX35 PDK) 11 Среда разработки: библиотеки Qt Creator 2.1RC и Qt4.7.1. Компилятор руки в пути:/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 рука-ни-линукс-gnueabi-как
arm-none-linux-gnueabi-run arm-none-linux-gnueabi-С++
arm-none-linux-gnueabi-size arm-none-linux-gnueabi-С++ filter
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 (С++/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 Test (тест кросс-скомпилирован в Qt Creator в режиме отладки) GNU gdb (GDB) 7.2
Copyright (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/iMX 35/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 in??()
(gdb)

и

(gdb) set solib-absolute-prefix/home/elux/iMX35/ltib/rootfs/
Чтение символов из /home/elux/iMX 35/ltib/rootfs/lib/ld-linux.so.3...done.
Загруженные символы для /home/elux/iMX 35/ltib/rootfs/lib/ld-linux.so.3

но

(gdb) set architecture armv5te
Предполагаемая архитектура цели - armv5te
Удаленный ответ "g" пакет слишком длинный: 00000000a7ee8ebe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

(gdb) b main
Удаленный ответ "g" пакет слишком длинный: 00000000a7ee8ebe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Есть ли у вас какие-либо идеи, с чем связана эта проблема? Как я могу его решить?

Ответы

Ответ 1

Как я столкнулся с этим недавно на Ubuntu 12.04 (x86_64) и решил его по-другому, я думал, что буду комментировать. Кикер в этом случае состоит в том, что Ubuntu, похоже, имеет gdb с включенным libexpat. Немного потрудившись позже, и это решило это для меня:

установить архитектуру i386: x86-64: intel

Итак, похоже, это может произойти, когда есть несоответствие архитектуры.

Ответ 2

Я смог использовать gdb-multiarch и решил свою проблему.

Ответ 3

У меня была эта же проблема, пытаясь отладить Freescale ARM на машине i5 с Ubuntu 11.10 64bit.

Исправление, которое сработало для меня, это указать флаг -with-expat при настройке gdb. Мне также пришлось установить пакет libexpat1-dev.

Объяснение здесь