Проверка работоспособности CLI
Прежде чем что-то делать, убедитесь, что вы:
Этот ответ предполагает, что вы можете сделать это на доске разработки:
sudo apt-get install gdbserver
gdbserver :1234 path/to/executable
И на хосте:
aarch64-linux-gnu-gdb \
-ex "target remote board-hostname:1234" \
-ex "file path/to/cross/compiled/executable" \
-ex 'tb main' \
-ex c
и затем пошаговая отладка всего правильно.
Настройка Eclipse
Протестировано на хосте Ubuntu 16.04, Eclipse Oxygen 4.7.0 (загружено с сайта), gdbserver
7.12, aarch64-linux-gnu-gdb
7.6.
Я успешно использовал все следующие методы:
- руководство
- автоматический
- пароль аутентификации
- открытый ключ аутентификации
Руководство
С помощью этого метода мы должны запустить gdbserver
на цели перед запуском отладки в Eclipse.
Pro: позволяет настраивать соединения SSH через Eclipse, чтобы Eclipse мог запускать gdbserver
, что является еще одной возможной точкой отказа.
Con: вы должны перезапускать gdbserver
каждый раз, когда начинается отладка. Этого можно преодолеть, если Eclipse понимает gdbserver --multi
, но я не думаю, что он понимает?
Из-за его простоты, я рекомендую вам сначала запустить этот метод.
Откройте настройки отладки, затем создайте новое «C / C ++ Remote Application».
Под вкладкой «Основные»:
выберите "Имя", "Проект" и "Приложение C / C ++" как обычно для локальной отладки
в нижней панели запуска, нажмите «Выбрать другие», установите флажок «Использовать определенные настройки конфигурации» и выберите «GDB (DSF) Manual Launcher Remote Debugging»
Почему мы делаем это: автоматическая программа запуска сначала подключается к плате с помощью SSH и запускает gdbserver
для вас.
![enter image description here](https://i.stack.imgur.com/wcXpp.png)
Под вкладкой «Отладчик»:
«Отладчик GDB»: то же, что используется из CLI на хосте, aarch64-linux-gnu-gdb
для этого примера
Подвкладка «Соединение»: задайте имя хоста и порт, передаваемые хосту через CLI (board-hostname
и 1234
)
![enter image description here](https://i.stack.imgur.com/pTfEV.png)
![enter image description here](https://i.stack.imgur.com/xkriF.png)
Наконец, вручную запустите gdbserver
на цели, как мы это делали из CLI:
gdbserver :1234 path/to/executable
и нормально запускайте отладчик из Eclipse.
Вы должны перезапускать gdbserver
каждый раз, когда завершаете работу программы.
Автомат с паролем auth
Это лучший метод для плат разработчиков, которые установили общеизвестные пароли.
Он подключается к цели с помощью SSH и пароля и автоматически запускает gdbserver
на цели каждый раз, что очень удобно!
Target gdbserver
стандартный вывод переходит в окно консоли Eclipse, что еще больше уменьшает переключение окон.
В наборе Eclipse:
Автоматически с открытым ключом
Очень похоже на аутентификацию по паролю, за исключением того, что вы должны перейти к: «Соединение», «Создать» и выбрать «Аутентификация на основе открытого ключа»
Плюсы:
- преодолевает «Защищенное хранилище не может сохранить мастер-пароль», если у вас есть незашифрованный закрытый ключ (небезопасно, но хорошо для devboards)
- для серверов, вы, вероятно, уже настроили открытый ключ
Минусы:
- настройка ключа может повредить в первый раз
- необходимо повторить настройку ключа всякий раз, когда devboard получает нюки
, поэтому я быпредпочитайте этот метод для серверов.
SSH может подключаться без пароля, если вы:
Перед использованием этого метода убедитесь, что ваш авторизованный пользовательключи работают из командной строки, то есть теперь вы должны иметь возможность:
ssh user@host
без ввода пароля.