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.
Pré-requisitos
Procedimento
- Identificar as chamadas do sistema a serem monitoradas.
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
.
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.A ferramenta
strace
sai quando o programa sai.Para encerrar o monitoramento antes da saída do programa rastreado, pressione
.-
Se
strace
iniciou o programa, o programa termina junto comstrace
. -
Se você anexou
strace
a um programa já em execução, o programa termina juntamente comstrace
.
-
Se
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.
É 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
A página do manual strace(1):
$ homem strace
- Como usar o strace para rastrear chamadas de sistema feitas por um comando?
- Guia do Usuário do Red Hat Developer Toolset