Как настроить 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 проверка здравомыслия

прежде чем что-либо делать, убедитесь, что вы:

этот ответ предполагает, что вы можно сделать на доске развития:

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 для вас.

    enter image description here

под вкладкой "отладчик":

  • "отладчик GDB": то же, что используется из CLI на хосте,aarch64-linux-gnu-gdb например

  • вкладка " подключение": установите имя хоста и порт, как передано хосту на CLI (board-hostname и 1234)

    enter image description here

    enter image description here

наконец, запустить вручную gdbserver на цели так же, как мы сделали из CLI:

gdbserver :1234 path/to/executable

и запустите отладчик из Eclipse нормально.

вы должны перезапустить gdbserver каждый раз, когда вы завершить программу.

автоматическая с пароль

это лучший метод для советов по разработке, которые исправили публично известные пароли.

он подключается к цели с SSH и паролем и запускает gdbserver на цели автоматически каждый раз, что очень удобно!

цель gdbserver stdout переходит в окно "консоль" Eclipse, что дополнительно уменьшает переключение окон.

в Eclipse set:

автоматический с открытым ключом

очень похоже на аутентификацию пароля, за исключением того, что вы должны перейти к: "соединение", "новый" и выбрать "аутентификация на основе открытого ключа"

плюсы:

  • преодолевает "безопасное хранилище не удалось сохранить мастер-пароль", если у вас есть незашифрованный закрытый ключ (небезопасно, но хорошо для devboards)
  • для серверов, вы, вероятно, уже настройка открытого ключа

плюсы:

  • настройка ключа может повредить в первый раз
  • необходимо повторить настройку ключа всякий раз, когда devboard nuked

поэтому я бы предпочел этот метод для серверов.

SSH может подключаться без пароля, если вы:

перед использованием этого метода убедитесь, что ваши авторизованные ключи работают из командной строки, т. е. теперь вы можете сделать:

ssh user@host

без ввода пароля.