Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Удаленная отладка C++ программ на ARM9 (arm-linux-gnu-gdb, gdbserver, Eclipse)
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
Raydan
Есть отладочная плата RDK Phytec LPC3250 с установленным gdbserver и ноутбук с Debian GNU/Linux и arm-linux-gnu-gdb.

При отладке функция main "прошагивается" нормально, вход по функциям проходит тоже нормально, а вот при попытке входа на строке типа "obj = new Object();" Eclipse открывает окно с заголовком
Код
2 operator new() new

и текстом
Код
Can't find a source file at "/home/usb10132/ct1/bin/targets/src/gcc-4.3.2/libstdc++-v3/libsupc++/new_op.cc"
Locate the file or edit the source lookup path to include its location.

То есть, как я понимаю, вместо того, чтобы войти в конструктор Object, отладчик пытается найти исходник оператора выделения памяти и это у него ну никак не получается.

Отладка просто средствами gdb без Eclipse ведет к тем же результатам (впрочем неудивительно).

На всякий случай привожу по шагам процесс настройки отладки:
  1. Отладочная плата Phytec LPC3250
    • установлен gdbserver с помощью системы сборки LTIB
    • запущена отлаживаемая программа командой
      Код
      gdbserver 192.168.0.7:6280

      где 192.168.0.7 -- ip-адрес ноута, 6280 -- какой-нить незарезервированный порт.
      Вывод программы следующий:
      Код
      Process m2b created; pid = 374
      Listening on port 6280
  2. Ноутбук с Debian GNU/Linux
    • установлены Eclipse и CDT (последних версий на данный момент), система сборки LTIB из CVS, а также отладчик gdb-arm-linux-gnu_6.8-3_i386 отсюда
    • В меню Eclipse Run->Debug Configurations->Debugger проведена следующая настройка:
      • в поле Debugger выбрано 'gdbserver debugger';
      • в табе Main в поле 'GDB debugger указан путь к установленному ARM-отладчику '/usr/bin/arm-linux-gnu-gdb';
      • в табе Shared Libraries указан путь к библиотекам платы (у меня это '/home/raydan/ltib/rootfs/lib', подкаталог монтируемой по NFS корневой ФС)
      • в табе Connection выбран тип TCP, указаны ip-адрес платы и порт для соединения


Может у кого-то был опыт отладки C++ программ в схожей ситуации, поделитесь пожалуйста.

--
С уважением,
Дмитрий Винокуров
Jameson
Эклипс не находит исходников libstdc++, базовой библиотеки С++ компилятора gcc. Попробуйте этот файл поискать на диске, вдруг путь просто неправильный указан. Как вариант можно скачать исходник gcc 4.3.2, распаковать куда-то, и его туда направить.
У меня есть небольшой опыт отладки ARM9 , но из arm-none-eabi-gdb, через J-link и без линукса.
А может вам собрать для вашего таргета gdb, и запускать непосредственно оттуда, и сервер, и клиент?
Raydan
Цитата(Jameson @ Aug 14 2009, 18:49) *
Эклипс не находит исходников libstdc++, базовой библиотеки С++ компилятора gcc. Попробуйте этот файл поискать на диске, вдруг путь просто неправильный указан. Как вариант можно скачать исходник gcc 4.3.2, распаковать куда-то, и его туда направить.
У меня есть небольшой опыт отладки ARM9 , но из arm-none-eabi-gdb, через J-link и без линукса.
А может вам собрать для вашего таргета gdb, и запускать непосредственно оттуда, и сервер, и клиент?


Так дело в том, что я и не хотел, чтобы он бродил по исходникам стандартной библиотеки. При запуске собранной под x86 версии моей программы исходники libstdc++ ведь не требуются, и отладка идет только в рамках моего кода, то есть как я и хочу.

Насчет сборки непосредственно на целевой плате -- а я не уверен что у меня будет место для полновесного gdb, когда с отладочной платы перейду на "боевую". Это сейчас я особо не ограничен в ресурсах.
voyt
Цитата(Raydan @ Aug 20 2009, 09:00) *
Так дело в том, что я и не хотел, чтобы он бродил по исходникам стандартной библиотеки. При запуске собранной под x86 версии моей программы исходники libstdc++ ведь не требуются, и отладка идет только в рамках моего кода, то есть как я и хочу.

Насчет сборки непосредственно на целевой плате -- а я не уверен что у меня будет место для полновесного gdb, когда с отладочной платы перейду на "боевую". Это сейчас я особо не ограничен в ресурсах.

Используйте NFS. Медленно, но зато диск почти неограничен.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.