Depuração

Esta seção inclui documentação sobre como depurar aplicativos Flatpak.

Executando ferramentas de depuração

Como o Flatpak executa cada aplicativo dentro de um sandbox, as ferramentas de depuração não podem ser usadas da maneira usual e, em vez disso, devem ser executadas de dentro do sandbox. Para colocar um shell na sandbox de um aplicativo, ele pode ser executado com a opção --command:

$ flatpak run --command=sh --devel <application-id>

Isso cria um sandbox para o aplicativo com o ID fornecido e, em vez de executá-lo, executa um shell dentro do sandbox. No prompt do shell, é possível executar o aplicativo. Isso também pode ser feito usando as ferramentas de depuração que você deseja usar. Por exemplo, para executar o aplicativo com gdb:

$ gdb /app/bin/<application-binary>

Isso funciona porque a opção --devel diz ao Flatpak para usar o SDK como runtime, o que inclui ferramentas de depuração como gdb. A opção --devel também ajusta a configuração da sandbox para ativar a depuração.

Nota

O SDK do Freedesktop (no qual muitos outros se baseiam) inclui uma variedade de ferramentas de depuração, como gdb, strace, nm, dbus-send, dconf e muitos outros.

gdb é muito mais útil quando ele tem acesso a informações de depuração para o aplicativo e o runtime que está usando. O Flatpak divide essas informações em extensões de depuração, que você deve instalar antes de depurar um aplicativo:

$ flatpak install <runtime-id>.Debug

Quando a opção --devel é usada, o Flatpak automaticamente usa as extensões de depuração correspondentes que encontrar.

Também é possível obter um shell dentro de um sandbox de aplicativos sem precisar instalá-lo. Isso é feito usando a opção --run do flatpak-builder:

$ flatpak-builder --run <build-dir> <manifest> sh

Isso configura um sandbox que é preenchido com os resultados da compilação encontrados no diretório de compilação e executa um shell dentro dele.

Criando uma extensão .Debug

Como muitos outros sistemas de empacotamento, o Flatpak separa informações volumosas de depuração do conteúdo normal e as envia separadamente, no que é chamado de extensão .Debug.

Quando um aplicativo é compilado, o flatpak-builder cria automaticamente uma extensão .Debug. Isso pode ser desativado com a opção no-debuginfo.

Sobrepondo permissões de sandbox

Às vezes, é útil ter permissões extras em uma sandbox durante a depuração. Isso pode ser alcançado usando as várias opções de sandbox que são aceitas pelo comando de execução. Por exemplo:

$ flatpak run --devel --command=sh --system-talk-name=org.freedesktop.login1 <application-id>

Este comando executa um shell na sandbox para o aplicativo fornecido, concedendo a ele acesso ao barramento do sistema ao nome do barramento pertencente a logind.

Inspecionando permissões do portal

O Flatpak possui vários comandos que permitem gerenciar permissões do portal para aplicativos.

Para ver todas as permissões de portal de um aplicativo, use:

$ flatpak permission-show <application-id>

Para redefinir todas as permissões do portal de um aplicativo, use:

$ flatpak permission-reset <application-id>

Interagindo com sandboxes em execução

Você pode ver todos os aplicativos atualmente em execução nos sandboxes do Flatpak (desde a versão 1.2):

$ flatpak ps

E, se necessário, você pode encerrar um à força (desde a versão 1.2):

$ flatpak kill <application-id>