Отладка¶
Этот раздел включает документацию по отладке приложений Flatpak.
Запуск инструментов отладки¶
Поскольку Flatpak запускает каждое приложение в песочнице, инструменты отладки нельзя использовать обычным способом, и вместо этого их нужно запускать из песочницы. Чтобы поместить оболочку в песочницу приложения, ее можно запустить с параметром --command
:
$ flatpak run --command=sh --devel <application-id>
Это создает песочницу для приложения с заданным идентификатором и вместо запуска приложения запускает оболочку внутри песочницы. Затем из командной строки можно запустить приложение. Это также можно сделать с помощью любых инструментов отладки, которые вы хотите использовать. Например, чтобы запустить приложение с gdb
:
$ gdb /app/bin/<application-binary>
Это работает, потому что опция --devel
указывает Flatpak использовать SDK в качестве среды выполнения, которая включает инструменты отладки, такие как gdb
. Параметр --devel
также регулирует настройку песочницы для включения отладки.
Примечание
Freedesktop SDK (на котором основаны многие другие) включает ряд инструментов отладки, таких как gdb
, strace
, nm
, dbus-send
, dconf
и многие другие.
gdb
гораздо более полезен, когда у него есть доступ к отладочной информации для приложения и используемой среды выполнения. Flatpak разделяет эту информацию на отладочные расширения, которые вы должны установить перед отладкой приложения:
$ flatpak install <runtime-id>.Debug
Когда используется параметр --devel
, Flatpak автоматически использует любые подходящие расширения отладки, которые он находит.
Также возможно получить оболочку внутри песочницы приложения без ее установки. Это делается с помощью параметра flatpak-builder
’s --run
:
$ flatpak-builder --run <build-dir> <manifest> sh
Это устанавливает песочницу, которая заполняется результатами сборки, найденными в каталоге сборки, и запускает оболочку внутри нее.
Создание расширения .Debug¶
Как и многие другие системы упаковки, Flatpak отделяет объемную отладочную информацию от обычного контента и отправляет ее отдельно в так называемом расширении .Debug.
Когда приложение построено, flatpak-builder
автоматически создает расширение .Debug
. Это можно отключить с помощью опции no-debuginfo
.
Переопределение разрешений песочницы¶
Иногда бывает полезно иметь дополнительные разрешения в песочнице при отладке. Этого можно добиться с помощью различных параметров песочницы, которые принимает команда запуска. Например:
$ flatpak run --devel --command=sh --system-talk-name=org.freedesktop.login1 <application-id>
Эта команда запускает оболочку в изолированной программной среде для данного приложения, предоставляя ему доступ к системной шине с именем шины, принадлежащим logind.
Проверка разрешений портала¶
Flatpak имеет ряд команд, позволяющих управлять разрешениями портала для приложений.
Чтобы увидеть все права доступа приложения к порталу, используйте:
$ flatpak permission-show <application-id>
Чтобы сбросить все права доступа приложения к порталу, используйте:
$ flatpak permission-reset <application-id>
Взаимодействие с запущенными песочницами¶
Вы можете увидеть все приложения, которые в настоящее время работают в песочницах Flatpak (начиная с версии 1.2):
$ flatpak ps
И, при необходимости, вы можете прекратить его принудительно (начиная с версии 1.2):
$ flatpak kill <application-id>