Capítulo 9. Interações da aplicação de gravação
O código executável das aplicações interage com o código do sistema operacional e bibliotecas compartilhadas. O registro de um registro de atividades destas interações pode fornecer uma visão suficiente sobre o comportamento da aplicação sem depurar o código da aplicação real. Alternativamente, a análise das interações de uma aplicação pode ajudar a identificar as condições nas quais um bug se manifesta.
9.1. Ferramentas úteis para o registro de interações de aplicações
O Red Hat Enterprise Linux oferece múltiplas ferramentas para analisar as interações de uma aplicação.
- strace
A ferramenta
strace
permite principalmente o registro de chamadas de sistema (funções do kernel) utilizadas por uma aplicação.-
A ferramenta
strace
pode fornecer uma saída detalhada sobre chamadas, porquestrace
interpreta parâmetros e resultados com conhecimento do código do kernel subjacente. Os números são transformados nos respectivos nomes constantes, bandeiras combinadas bitwise expandidas para lista de bandeiras, ponteiros para conjuntos de caracteres desreferenciados para fornecer a string real, e muito mais. Pode estar faltando suporte para características mais recentes do kernel. - Você pode filtrar as chamadas rastreadas para reduzir a quantidade de dados capturados.
-
O uso do
strace
não requer nenhuma configuração em particular, exceto para a instalação do filtro de log. -
O rastreamento do código da aplicação com
strace
resulta em uma desaceleração significativa da execução da aplicação. Como resultado,strace
não é adequado para muitas implantações de produção. Como alternativa, considere o uso deltrace
ou SystemTap. -
A versão de
strace
disponível no Red Hat Developer Toolset também pode realizar a adulteração de chamadas do sistema. Esta capacidade é útil para a depuração.
-
A ferramenta
- ltrace
A ferramenta
ltrace
permite o registro das chamadas de espaço do usuário de uma aplicação em objetos compartilhados (bibliotecas dinâmicas).-
A ferramenta
ltrace
permite o rastreamento de chamadas para qualquer biblioteca. - Você pode filtrar as chamadas rastreadas para reduzir a quantidade de dados capturados.
-
O uso do
ltrace
não requer nenhuma configuração em particular, exceto para a instalação do filtro de log. -
A ferramenta
ltrace
é leve e rápida, oferecendo uma alternativa aostrace
: é possível rastrear as respectivas interfaces em bibliotecas comoglibc
comltrace
em vez de rastrear as funções do kernel comstrace
. -
Como
ltrace
não lida com um conjunto conhecido de chamadas comostrace
, ele não tenta explicar os valores passados para as funções da biblioteca. A saída deltrace
contém apenas números brutos e ponteiros. A interpretação da saídaltrace
requer a consulta das declarações de interface reais das bibliotecas presentes na saída.
NotaNo Red Hat Enterprise Linux 8.0, um problema conhecido impede que
ltrace
rastreie arquivos executáveis do sistema. Esta limitação não se aplica a arquivos executáveis construídos pelos usuários.-
A ferramenta
- SystemTap
SystemTap é uma plataforma de instrumentação para sondar processos em execução e atividades de kernel no sistema Linux. SystemTap usa sua própria linguagem de script para programação de manipuladores de eventos personalizados.
-
Em comparação com o uso de
strace
eltrace
, o registro de dados significa mais trabalho na fase inicial de configuração. Entretanto, as capacidades de scripting estendem a utilidade do SystemTap além da simples produção de logs. - SystemTap funciona através da criação e inserção de um módulo de núcleo. O uso do SystemTap é eficiente e não cria uma desaceleração significativa do sistema ou da execução da aplicação por si só.
- O SystemTap vem com um conjunto de exemplos de uso.
-
Em comparação com o uso de
- GDB
O GNU Debugger (GDB) destina-se principalmente à depuração, não ao registro. Entretanto, algumas de suas características o tornam útil mesmo no cenário em que a interação de um aplicativo é a principal atividade de interesse.
- Com a GDB, é possível combinar convenientemente a captura de um evento de interação com a depuração imediata do caminho de execução subseqüente.
- A GDB é mais adequada para analisar a resposta a eventos infrequentes ou singulares, após a identificação inicial da situação problemática por outras ferramentas. O uso da GDB em qualquer cenário com eventos frequentes torna-se ineficiente ou mesmo impossível.