Red Hat Training

A Red Hat training course is available for RHEL 8

9.2. Monitorar as chamadas do sistema de uma aplicação com strace

A ferramenta strace permite monitorar as chamadas do sistema (kernel) realizadas por uma aplicação.

Procedimento

  1. Identificar as chamadas do sistema a serem monitoradas.
  2. Iniciar strace e anexá-lo ao programa.

    • Se o programa que você deseja monitorar não estiver em execução, inicie strace e especifique o program:

      $ strace -fvttTyyy -s 256 -e trace=call program
    • Se o programa já estiver em execução, encontrar sua identificação de processo (pid) e anexar strace a ele:

      $ ps -C program
      (...)
      $ strace -fvttTyy -s 256 -e trace=call -ppid
    • Substituir call pelas chamadas do sistema a serem exibidas. Você pode usar o -e trace=call opção várias vezes. Se omitido, strace exibirá todos os tipos de chamadas do sistema. Consulte a página do manual strace(1) para mais informações.
    • Se você não quiser rastrear nenhum processo bifurcado ou rosca, deixe de fora a opção -f.
  3. A ferramenta strace exibe as chamadas do sistema feitas pela aplicação e seus detalhes.

    Na maioria dos casos, uma aplicação e suas bibliotecas fazem um grande número de chamadas e a saída de strace aparece imediatamente, se nenhum filtro para chamadas ao sistema for definido.

  4. A ferramenta strace sai quando o programa sai.

    Para encerrar o monitoramento antes da saída do programa rastreado, pressione Ctrl C.

    • Se strace iniciou o programa, o programa termina junto com strace.
    • Se você anexou strace a um programa já em execução, o programa termina juntamente com strace.
  5. Analisar a lista de chamadas de sistema feitas pela aplicação.

    • Os problemas de acesso ou disponibilidade de recursos estão presentes no registro como erros de retorno de chamadas.
    • Os valores passados para as chamadas ao sistema e os padrões de seqüências de chamadas fornecem uma visão das causas do comportamento da aplicação.
    • Se a aplicação falhar, as informações importantes estarão provavelmente no final do registro.
    • A saída contém muitas informações desnecessárias. Entretanto, você pode construir um filtro mais preciso para as chamadas de interesse do sistema e repetir o procedimento.
Nota

É vantajoso tanto ver a saída quanto salvá-la em um arquivo. Use o comando tee para conseguir isso:

$ strace ... |& tee your_log_file.log

Recursos adicionais