Как настроить Eclipse для удаленной отладки C с помощью gdbserver?
Я довольно новичок в Eclipse. Попытка настроить удаленную отладку.
вот ситуация, я подключаюсь к удаленной машине под управлением Linux, я запускаю Windows.
1) я установил все необходимые инструменты для Eclipse и смог подключиться к Linux-машине.
2) Удаленная машина имеет gdbserver
linux1[1]% gdbserver
Usage: gdbserver [OPTIONS] COMM PROG [ARGS ...]
gdbserver [OPTIONS] --attach COMM PID
gdbserver [OPTIONS] --multi COMM
COMM may either be a tty device (for serial debugging), or
HOST:PORT to listen for a TCP connection.
Options:
--debug Enable debugging output.
мне нужно настроить что-нибудь в gdbserver
???
3) Что еще я должен настроить в Eclipse ? для удаленная отладка ?
4) имеет ли значение, что моя версия GDB отличается от удаленной машины GDB ?
2 ответов
gdbserver
нужно больше аргументов. Например, Скажи gdbserver localhost:1337 yourprogram yourprogramarguments
и продолжайте работать.
затем в Eclipse создайте новую конфигурацию отладки для " приложения C / C++". На главной вкладке, внизу, выберите GDB (GSF) Remote System Process Launcher
как лаунчер. На вкладке отладчик выберите gdbserver Debugger
в качестве отладчика. В связи, скажем TCP
как тип соединения и дать localhost:1337
адрес. При запуске конфигурации, вы можете управлять удаленным gdb
путем ввода команд в консоли.
CLI проверка здравомыслия
прежде чем что-либо делать, убедитесь, что вы:
- кросс-компиляции приложения правильно и что он работает. Вам не обязательно делать это с помощью Eclipse.
- получить удаленную отладку GDB, работающую должным образом из командной строки. Это может помочь: как вы начинаете запускать программу снова в gdb с помощью "target remote"?
этот ответ предполагает, что вы можно сделать на доске развития:
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 host, Eclipse Oxygen 4.7.0 (загружено с веб-сайта),gdbserver
7.12, aarch64-linux-gnu-gdb
7.6.
я успешно использовал следующие методы:
- руководство
- автоматическое
- пароль auth
- открытый ключ auth
руководство
С помощью этого метода, мы должны запустить gdbserver
на цели перед запуском отладки в Eclipse.
Pro: распределяет настройку SSH-соединений через Eclipse, чтобы позволить Eclipse работать gdbserver
, что является еще одной возможной точкой отказа.
Con: вы должны перезапустить gdbserver
каждый раз, когда начинается отладка. Это может быть преодолено, если Eclipse понял gdbserver --multi
, но я не думаю, что он делает?
из-за своей простоты я рекомендую вам сначала заставить этот метод работать.
откройте конфигурации отладки, затем создайте новое " удаленное приложение C / C++".
под вкладкой "Main":
выберите "имя", "проект" и " приложение C/C++", как обычно для локальной отладки
-
в нижней панели запуска нажмите "Выбрать другое", установите флажок " Использовать настройка конкретных настроек "и выберите"GDB (DSF) ручная удаленная отладка Launcher"
почему мы это делаем: автоматическая пусковая установка сначала подключается к плате с SSH и запускает
gdbserver
для вас.
под вкладкой "отладчик":
"отладчик GDB": то же, что используется из CLI на хосте,
aarch64-linux-gnu-gdb
например-
вкладка " подключение": установите имя хоста и порт, как передано хосту на CLI (
board-hostname
и1234
)
наконец, запустить вручную gdbserver
на цели так же, как мы сделали из CLI:
gdbserver :1234 path/to/executable
и запустите отладчик из Eclipse нормально.
вы должны перезапустить gdbserver
каждый раз, когда вы завершить программу.
автоматическая с пароль
это лучший метод для советов по разработке, которые исправили публично известные пароли.
он подключается к цели с SSH и паролем и запускает gdbserver
на цели автоматически каждый раз, что очень удобно!
цель gdbserver
stdout переходит в окно "консоль" Eclipse, что дополнительно уменьшает переключение окон.
в Eclipse set:
- работы по "Безопасное хранилище не удалось сохранить мастер-пароль" ошибка, как объясняется в:как решить "безопасное хранилище не удалось сохранить мастер-пароль" в Eclipse CDT remote application с SSH password debug connection?
- установить гранатомет: "автоматического запуска удаленной отладки"
- установить "удаленный абсолютный путь к файлу
для приложения C / C++ " to
/root/path/to/project/path/to/executable
- "соединение", "новый" и выберите "пароль проверка подлинности"
автоматический с открытым ключом
очень похоже на аутентификацию пароля, за исключением того, что вы должны перейти к: "соединение", "новый" и выбрать "аутентификация на основе открытого ключа"
плюсы:
- преодолевает "безопасное хранилище не удалось сохранить мастер-пароль", если у вас есть незашифрованный закрытый ключ (небезопасно, но хорошо для devboards)
- для серверов, вы, вероятно, уже настройка открытого ключа
плюсы:
- настройка ключа может повредить в первый раз
- необходимо повторить настройку ключа всякий раз, когда devboard nuked
поэтому я бы предпочел этот метод для серверов.
SSH может подключаться без пароля, если вы:
- set
~/.ssh/authorized_keys
на цели, чтобы содержать~/.ssh/id_rsa.pub
от ведущего - имейте не зашифрованный закрытый ключ на хосте, который обходит наш беды пароль
- установить досадную папку permissions правильно: https://unix.stackexchange.com/questions/36540/why-am-i-still-getting-a-password-prompt-with-ssh-with-public-key-authentication
перед использованием этого метода убедитесь, что ваши авторизованные ключи работают из командной строки, т. е. теперь вы можете сделать:
ssh user@host
без ввода пароля.