Red Hat Training

A Red Hat training course is available for RHEL 8

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, porque strace 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 de ltrace 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.
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 ao strace: é possível rastrear as respectivas interfaces em bibliotecas como glibc com ltrace em vez de rastrear as funções do kernel com strace.
  • Como ltrace não lida com um conjunto conhecido de chamadas como strace, ele não tenta explicar os valores passados para as funções da biblioteca. A saída de ltrace contém apenas números brutos e ponteiros. A interpretação da saída ltrace requer a consulta das declarações de interface reais das bibliotecas presentes na saída.
Nota

No 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.

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 e ltrace, 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.
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.