Отладка

Этот раздел включает документацию по отладке приложений 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.

To install the .Debug extension created locally, pass --install to flatpak-builder which will set up a new remote for the build. The remotes available can be checked with flatpak remotes --columns=name,url. Then install the .Debug extension from that remote:

$ flatpak install foo-origin $FLATPAK_ID.Debug

Переопределение разрешений песочницы

Иногда бывает полезно иметь дополнительные разрешения в песочнице при отладке. Этого можно добиться с помощью различных параметров песочницы, которые принимает команда запуска. Например:

$ 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>