Jump to content

    
Sign in to follow this  
Raydan

Удаленная отладка C++ программ на ARM9 (arm-linux-gnu-gdb, gdbserver, Eclipse)

Recommended Posts

Есть отладочная плата 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++ программ в схожей ситуации, поделитесь пожалуйста.

 

--

С уважением,

Дмитрий Винокуров

Edited by Raydan

Share this post


Link to post
Share on other sites

Эклипс не находит исходников libstdc++, базовой библиотеки С++ компилятора gcc. Попробуйте этот файл поискать на диске, вдруг путь просто неправильный указан. Как вариант можно скачать исходник gcc 4.3.2, распаковать куда-то, и его туда направить.

У меня есть небольшой опыт отладки ARM9 , но из arm-none-eabi-gdb, через J-link и без линукса.

А может вам собрать для вашего таргета gdb, и запускать непосредственно оттуда, и сервер, и клиент?

Share this post


Link to post
Share on other sites
Эклипс не находит исходников libstdc++, базовой библиотеки С++ компилятора gcc. Попробуйте этот файл поискать на диске, вдруг путь просто неправильный указан. Как вариант можно скачать исходник gcc 4.3.2, распаковать куда-то, и его туда направить.

У меня есть небольшой опыт отладки ARM9 , но из arm-none-eabi-gdb, через J-link и без линукса.

А может вам собрать для вашего таргета gdb, и запускать непосредственно оттуда, и сервер, и клиент?

 

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

 

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

Share this post


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

 

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

Используйте NFS. Медленно, но зато диск почти неограничен.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this