Удаленная перекрестная отладка GDB завершается с ошибкой «Удаленный ответ пакета 'g' слишком длинный» - PullRequest
16 голосов
/ 04 февраля 2011

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

Хост: ноутбук Intel i5 с Ubuntu 10.10 x86 Цель: Freescale iMX35 (iMX35 PDK) arm 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 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-stringsarm-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, которое создает простое приложение 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 Test
Process Test создан;pid = 2194
Прослушивание через порт 4000

На цели:

$ arm-none-linux-gnueabi-gdb Test (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
Это бесплатное программное обеспечение: выВы можете свободно изменять и распространять его.
ГАРАНТИИ НЕ ПРЕДОСТАВЛЯЮТСЯ, насколько это разрешено законом.Для подробностей введите "show copying"
и "show гарантии".
Эта 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
Remote 'г' Пакет ответа слишком долго: 00000000a7ee8ebe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0ed8ebe00000000e007004010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

1090 * (GDB) б главный

Remote 'г' пакета ответа слишком долго: 00000000a7ee8ebe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0ed8ebe00000000e007004010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

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

Ответы [ 3 ]

16 голосов
/ 15 мая 2013

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

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

Похоже, это может произойти и в случае несоответствия архитектур.

14 голосов
/ 08 сентября 2013

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

7 голосов
/ 15 марта 2012

У меня была такая же проблема при попытке отладки ARM Freescale на машине i5 под управлением Ubuntu 11.10 64bit.

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

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

...