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
stracee anexá-lo ao programa.Se o programa que você deseja monitorar não estiver em execução, inicie
stracee especifique o program:strace -fvttTyyy -s 256 -e trace=call program
$ strace -fvttTyyy -s 256 -e trace=call programCopy to Clipboard Copied! Toggle word wrap Toggle overflow Se o programa já estiver em execução, encontrar sua identificação de processo (pid) e anexar
stracea ele:ps -C program (...) strace -fvttTyy -s 256 -e trace=call -ppid
$ ps -C program (...) $ strace -fvttTyy -s 256 -e trace=call -ppidCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
Substituir call pelas chamadas do sistema a serem exibidas. Você pode usar o
-e trace=callopção várias vezes. Se omitido,straceexibirá 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
straceexibe 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
straceaparece imediatamente, se nenhum filtro para chamadas ao sistema for definido.A ferramenta
stracesai quando o programa sai.Para encerrar o monitoramento antes da saída do programa rastreado, pressione .
-
Se
straceiniciou o programa, o programa termina junto comstrace. -
Se você anexou
stracea 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
$ strace ... |& tee your_log_file.log
Recursos adicionais
A página do manual strace(1):
homem strace
$ homem straceCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Como usar o strace para rastrear chamadas de sistema feitas por um comando?
- Guia do Usuário do Red Hat Developer Toolset