Как настроить Eclipse для удаленной отладки C с помощью gdbserver? - PullRequest
10 голосов
/ 28 октября 2010

Я довольно новичок в 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 ]

7 голосов
/ 21 ноября 2010

gdbserver нужно больше аргументов. Например, скажите gdbserver localhost:1337 yourprogram yourprogramarguments и продолжайте работать.

Затем в Eclipse создайте новую конфигурацию отладки для «Приложения C / C ++». На главной вкладке внизу выберите GDB (GSF) Remote System Process Launcher в качестве модуля запуска. На вкладке отладчика выберите gdbserver Debugger в качестве отладчика. При подключении скажите TCP в качестве типа подключения и укажите localhost:1337 в качестве адреса. Когда вы запускаете конфигурацию, вы можете управлять пультом gdb, вводя команды в консоли.

6 голосов

Проверка работоспособности 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

Под вкладкой «Отладчик»:

  • «Отладчик 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 каждый раз, когда завершаете работу программы.

Автомат с паролем auth

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

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

Target gdbserver стандартный вывод переходит в окно консоли Eclipse, что еще больше уменьшает переключение окон.

В наборе Eclipse:

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

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

Плюсы:

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

Минусы:

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

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

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

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

ssh user@host

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

...