Удаленная компиляция C / C ++, локальный сеанс отладки с использованием ELF (Embedded, Cortex-M) - PullRequest
1 голос
/ 09 апреля 2019

Я много пишу на C / C ++ на своем ноутбуке.К сожалению, двойное ядро ​​имеет свои ограничения, когда дело доходит до компиляции, что я часто и делаю.но преимущество в том, что я мобильн, и я могу носить с собой отладчик (usb j-link) (и нет, опция ethernet-j-link слишком дорогая).

У меня есть сервер с24 ядра.Я хотел бы использовать сервер для компиляции, а затем скопировать скомпилированные файлы (в основном, ELF) на локальный компьютер для отладки.

Обе машины используют Ubuntu (Ubuntu Budgie для ноутбука, Ubuntu Server для сервера).

К сожалению, Eclipse GDB (Atollic 8.1) больше не может отображать двоичные адреса в мои исходные файлы в графическом отладчике (понятно).

Мне было интересно, как графическиОтладчик возможен для сопоставления адресов с текстом (src).Это информация о пути в файле ELF?Если это так, как я могу исправить это, чтобы удаленный скомпилированный двоичный файл мог отлаживать запуск на моем ноутбуке?

1 Ответ

0 голосов
/ 09 апреля 2019

В gdb вы можете сделать это:

установить путь замены от до

Определить правило замены пути источника и добавить его в полеконец текущего списка существующих правил замещения.Если правило с таким же значением from уже было определено, то старое правило также удаляется.Например, если файл /foo/bar/baz.c был перемещен в /mnt/cross/baz.c, то команда (gdb) set substitute-path / foo / bar / mnt / cross скажет GDB заменить '/ foo / bar 'с' / mnt / cross ', что позволит GDB найти файл baz.c, даже если он был перемещен.В случае, когда определено более одного правила замещения, правила оцениваются по одному в том порядке, в котором они были определены.Первый соответствующий, если таковой имеется, выбран для выполнения замены.Например, если бы мы ввели следующие команды: (gdb) установить substitute-path / usr / src / include / mnt / include (gdb) установить substitute-path / usr / src / mnt / src, то GDB переписал бы / usr /src / include / defs.h в /mnt/include/defs.h, используя первое правило.Тем не менее, он будет использовать второе правило, чтобы переписать /usr/src/lib/foo.c в /mnt/src/lib/foo.c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...