Strace: interrogar aplicativos Linux com comportamento inadequado

Quer saber por que você está recebendo um despejo de memória? Congelamento de aplicativo toda vez que você faz X? Saindo sem nenhuma mensagem? O que está acontecendo?!?

Com um pouco de paciência, muitas vezes você pode ver por si mesmo com Strace: http://linux.die.net/man/1/strace

Strace (System Trace) permite que você inicie um aplicativo ou até mesmo conecte-o a um aplicativo em execução existente e descubra quais chamadas de sistema estão acontecendo entre o modo de usuário e kernel.

Para começar a espionar essas conversas de chamada do sistema, use:

strace someapplication

Para ouvir algum processo em execução no momento, use:

strace -pSOME_PROCESS_PID

Para ouvir apenas chamadas de sistema específicas em um processo em execução, use uma expressão válida (consulte a página de manual):

strace -pSOME_PROCESS_PID -e trace=network

O exemplo acima produziria apenas dados de chamadas de sistema relacionadas à rede.

Com as expressões de saída corretas para filtragem, strace pode ser inestimável quando algum aplicativo Linux malcomportado simplesmente se recusa a dizer o que está errado. Qualquer coisa, desde bibliotecas compartilhadas ausentes a arquivos de configuração mal formatados ou o fato de que algum endereço IP misterioso não responde às conexões, pode ser descoberto quando um aplicativo “se recusa a falar sobre isso”.

Isso também pode ser um salva-vidas em todos os tipos de servidores de teste, UAT e de produção. Da próxima vez que um aplicativo Linux apresentar problemas sem lhe dizer o motivo, não tente adivinhar: strace!