Способы отладки#

Часто возникает потребность в удаленной отладки приложений, запущенных на планшете или телефоне. Далее будет рассмотрена удаленная отладка приложений с архитектурами amd64 и arm64.

1. Удаленная отладка приложения с архитектурой amd64#

1.1. Установка дополнительных пакетов#

  • Устанавливаем на удаленной машине gdbserver

sudo apt install gdbserver

1.2. Настройка QtCreator#

  • Добавляем удаленное устройство (Инструменты/Параметры…/Устройства)

../../../_images/debug_1.png
  • Добавляем комплект для удаленного устройства (Инструменты/Параметры…/Комплекты). В поле «Устройство» указываем добавленное устройство.

../../../_images/debug_2.png

1.3. Сборка пакета с отладочной информацией и его установка#

  • Собираем пакет с отладочной информацией

DEB_BUILD_OPTIONS='nostrip noopt debug' dpkg-buildpackage -uc -us

В данном случае отладочная информация не будет находиться в отдельном пакете

  • Устанавливаем пакет(ы) на хостовую и удаленную машины

1.4. Отладка#

На удаленной машине:

  • Подключаемся gdbserver-ом к процессу, который нужно отладить

sudo gdbserver :12345 --attach $(pidof <имя процесса>)

На хосте:

  • Запускаем QtCreator из папки с исходными текстами

  • Запускаем отладку (Отладка/Начать отладку/Подключиться к серверу отладки…)

../../../_images/debug_3.png

2. Удаленная отладка приложения с архитектурой arm64#

2.1. Установка дополнительных пакетов#

Устанавливаем на удаленной машине gdbserver

sudo apt install gdbserver

На хосте устанавливаем gdb-multiarch

sudo apt install gdb-multiarch

2.2. Настройка QtCreator#

  • Добавляем удаленное устройство (Инструменты/Параметры…/Устройства)

../../../_images/debug_4.png
  • Добавляем отладчик

../../../_images/debug_5.png
  • Добавляем комплект для удаленного устройства (Инструменты/Параметры…/Комплекты). В поле «Устройство» указываем добавленное устройство. В поле «Отладчик» указываем добавленный отладчик.

../../../_images/debug_6.png

2.3. Подготовка chroot-a#

Нужно подготовить chroot c arm64

2.4. Сборка пакета с отладочной информацией и его установка#

  • Собираем пакет с отладочной информацией в chroot-e

DEB_BUILD_OPTIONS='nostrip noopt debug' dpkg-buildpackage -uc -us

В данном случае отладочная информация не будет находиться в отдельном пакете

  • Устанавливаем пакет(ы) в chroot и на удаленную машину

2.5. Отладка#

На удаленной машине:

  • Подключаемся gdbserver-ом к процессу, который нужно отладить

sudo gdbserver :12345 --attach $(pidof <имя процесса>)

На хосте:

  • Запускаем QtCreator из папки с исходными текстами

  • Запускаем отладку (Отладка/Начать отладку/Подключиться к серверу отладки…). В поле «Локальная программа» указываем программу из chroot-a. В поле «Переопределение SysRoot» указываем подготовленный chroot.

../../../_images/debug_7.png