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 Copiar o linkLink copiado para a área de transferência!
O Red Hat Enterprise Linux oferece múltiplas ferramentas para analisar as interações de uma aplicação.
- strace
A ferramenta
stracepermite principalmente o registro de chamadas de sistema (funções do kernel) utilizadas por uma aplicação.-
A ferramenta
stracepode fornecer uma saída detalhada sobre chamadas, porquestraceinterpreta 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
stracenã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
straceresulta em uma desaceleração significativa da execução da aplicação. Como resultado,stracenão é adequado para muitas implantações de produção. Como alternativa, considere o uso deltraceou SystemTap. -
A versão de
stracedisponí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
ltracepermite o registro das chamadas de espaço do usuário de uma aplicação em objetos compartilhados (bibliotecas dinâmicas).-
A ferramenta
ltracepermite o rastreamento de chamadas para qualquer biblioteca. - Você pode filtrar as chamadas rastreadas para reduzir a quantidade de dados capturados.
-
O uso do
ltracenã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 comoglibccomltraceem vez de rastrear as funções do kernel comstrace. -
Como
ltracenã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 deltracecontém apenas números brutos e ponteiros. A interpretação da saídaltracerequer 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
ltracerastreie 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
straceeltrace, 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.