Способы отладки#
Часто возникает потребность в удаленной отладки приложений, запущенных на планшете или телефоне. Далее будет рассмотрена удаленная отладка приложений с архитектурами amd64 и arm64.
1. Удаленная отладка приложения с архитектурой amd64#
1.1. Установка дополнительных пакетов#
Устанавливаем на удаленной машине
gdbserver
sudo apt install gdbserver
1.2. Настройка QtCreator#
Добавляем удаленное устройство ()
Добавляем комплект для удаленного устройства (). В поле
Устройствоуказываем добавленное устройство.
1.3. Сборка пакета с отладочной информацией и его установка#
Собираем пакет с отладочной информацией
DEB_BUILD_OPTIONS='nostrip noopt debug' dpkg-buildpackage -uc -us
В данном случае отладочная информация не будет находиться в отдельном пакете
Устанавливаем пакет(ы) на хостовую и удаленную машины
1.4. Отладка#
На удаленной машине:
Подключаемся gdbserver-ом к процессу, который нужно отладить
sudo gdbserver :12345 --attach $(pidof <имя процесса>)
На хосте:
Запускаем
QtCreatorиз папки с исходными текстамиЗапускаем отладку (Отладка/Начать отладку/Подключиться к серверу отладки…)
2. Удаленная отладка приложения с архитектурой arm64#
2.1. Установка дополнительных пакетов#
Устанавливаем на удаленной машине gdbserver
sudo apt install gdbserver
На хосте устанавливаем gdb-multiarch
sudo apt install gdb-multiarch
2.2. Настройка QtCreator#
Добавляем удаленное устройство ()
Добавляем отладчик
Добавляем комплект для удаленного устройства (). В поле
Устройствоуказываем добавленное устройство. В полеОтладчикуказываем добавленный отладчик.
2.3. Подготовка chroot#
2.4. Сборка пакета с отладочной информацией и его установка#
Собираем пакет с отладочной информацией в
chroot
DEB_BUILD_OPTIONS='nostrip noopt debug' dpkg-buildpackage -uc -us
В данном случае отладочная информация не будет находиться в отдельном пакете
Устанавливаем пакет(ы) в
chrootи на удаленную машину
2.5. Отладка#
На удаленной машине:
Подключаемся
gdbserverк процессу, который нужно отладить
sudo gdbserver :12345 --attach $(pidof <имя процесса>)
На хосте:
Запускаем
QtCreatorиз папки с исходными текстамиЗапускаем отладку (). В поле «Локальная программа» указываем программу из chroot-a. В поле
Переопределение SysRootуказываем подготовленныйchroot.
3. Удаленная отладка приложения по ssh#
Для тех, кто проводит отладку ПО на планшетах по ssh.
Если приложение использует dbus для общения со службами, запущенными вне текущего сеанса ssh, недостаточно использовать:
export $(dbus-launch)
Нужно получить значение переменной окружения DBUS_SESSION_BUS_ADDRESS у какого-нибудь из корневых процессов, запущенных под тем же пользователем.
Или даже все переменные окружения, которые используются для запуска приложений в графическом сеансе.
Например, так:
export $(xargs -0 -a "/proc/$(pgrep plasmashell)/environ")