Как выполнить удаленную отладку с помощью GDB из Qt Creator?

Я работаю над приложением Embedded Linux и хотел бы использовать GDB для его отладки. Проблема в том, что, хотя конфигурация Kit выглядит нормально (параметр Debugger правильно указывает на GDB, соответствующий GCC устройства — устройство представляет собой Linux ARM), когда я прошу Qt Creator запустить в режиме отладки, он возвращает ошибку в «Вывод приложения»:

sh: gdbserver: not found

Это кажется странным, поскольку, как мне грустно, конфигурация в порядке, и Qt Creator не сообщает об этом ни в какой момент перед запуском режима отладки.

Я провел некоторое исследование в Интернете, чтобы найти точные шаги по использованию GDB для отладки приложения Embedded Linux из Qt Creator (для использования точек останова и т. д.), и самый близкий ответ, который я получил, был этот комментарий Тобиаса Хангера:

Для этого на вашей плате должны быть установлены ssh и gdbserver. Затем вам нужно настроить свою доску [qt-project.org] в Creator. После этого вам нужно настроить комплект [qt-project.org] с помощью этого устройства.

Эти шаги, подумал я, не ясны мне.

  • Во-первых, зачем мне нужно иметь GDB внутри устройства, если Kit должен указывать на мою локальную GDB?
  • Или не должно?
  • Куда бы я поместил GDB в любом случае?
  • Как узнать, есть ли на моем устройстве этот ssh?
  • Если нет, то как мне его установить?
  • Все остальные упомянутые шаги уже выполнены, но связаны с GDB, расположенной на моем рабочем столе Ubuntu. Должен ли я что-то изменить, если я выполню вышеуказанные шаги?

И, конечно же, этот мануал мой Тобиас полный или нужно еще что-то сделать, чтобы это заработало?


person Momergil    schedule 04.09.2014    source источник


Ответы (1)


Вам нужны gdb и ssh на вашей Ubuntu и gdbserver и sshd на вашем устройстве: на самом деле, когда вы развертываете проект на удаленном устройстве с помощью QtCreator, он использует ssh для копирования файлов в цель, а затем запускает gdbserver на устройстве (прилагается к исполняемому файлу, который вы хотите отладить), а затем запускает gdb на вашем Ubuntu, подключаясь к работающему gdbserver на устройстве.

Так что вам нужны все они, чтобы заставить вещи работать.

ssh и gdb можно установить на Ubuntu просто через apt-get. Вместо этого установка sshd и gdbserver на вашей плате зависит от платформы: возможно, некоторые платы уже имеют их в своем стандартном образе системы, или, возможно, в некоторых случаях вы должны установить их... если ваш дистрибутив Linux на плате есть какой-то менеджер пакетов, тогда вы можете попробовать его использовать... в худшем случае вам придется скомпилировать их самостоятельно для своей платы и установить вручную.

person Morix Dev    schedule 05.09.2014
comment
Спасибо за ответ; отличный ответ! Уникальная проблема в том, что я не смог найти ссылку для скачивания этого gdbserver; большинство результатов в Google указывают только на GDB, и даже страница Википедии об этом не указывает на репозиторий или ссылку для скачивания. Итак, как/где я могу загрузить это для моего встроенного Linux? - person Momergil; 05.09.2014
comment
конечно, я говорю о gdbserver для компиляции и установки на моем устройстве с Embedded Linux; установить его на мой настольный компьютер можно с помощью Synaptic (и в этом случае он уже установлен и все еще не работает должным образом) - person Momergil; 05.09.2014
comment
ну наконец-то мне удалось сделать удаленную отладку :) Единственное отличие от того, что я сделал и что вы ответили, это то, что мне не нужно было компилировать gdbserver специально для моего внешнего устройства; Я просто использовал тот, который поставляется с linux-devkit, который я использую для компиляции своих приложений на устройство, скопировав его в каталог /usr/bin/ в моем встроенном Linux (позже потребуется chmod +x). - person Momergil; 05.09.2014
comment
@Momergil: Извините, но я только сейчас прочитал ваши комментарии... Я рад, что вы, наконец, это сделали! В любом случае, исходный код gdbserver включен в пакет gdb, поэтому, если вы загрузите его с здесь тогда у вас также будет gdbserver. Пожалуйста, примите мой ответ, если вы думаете, что я вам помог :) - person Morix Dev; 06.09.2014
comment
Что ж, это определенно помогло, хотя мне не пришлось использовать специально скомпилированный gdbserver, как упоминалось ранее :) - person Momergil; 08.09.2014
comment
вы можете попробовать это на устройстве: sudo apt-get install gdbserver - person Tuncay Ince; 08.11.2020