[CentOS-pt-br] Um pouco de ajuda sobre Strace

Aslan Carlos aslan em linuxadvanced.com
Quinta Março 1 07:07:14 EST 2012


Pessoal,

Eu comentei ontem sobre o Strace aqui na lista, e recebi um email 
comentando sobre, acabei escrevendo um pouco sobre o comando Strace e 
Ltrace, decidi compartilha com o grupo, talvez ajude-os em algo!



Existe dois comandos chamados trace de processos que você pode utilizar 
e são bastante úteis, pois as mensagens geradas por um programa sempre 
são mensagens criadas pelo programador, mas não diz tudo o que acontece 
por dentro do processo.

O Strace ele faz um trace e mostra todas as chamadas de sistema, tudo 
que é chamada para o Kernel, para explicar isso fica mais complicado, 
mas normalmente o programa chama uma função e ela é convertida para um 
função da API do Kernel.

Aqui tá um exemplo que pode te ajudar.

Esse é o comando 'strace ls' no meu home.

/* 61 entries */, 32768)    = 1984
getdents(3, /* 0 entries */, 32768)     = 0
close(3)                                = 0
fstat(1, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) 
= 0x7fcdbddcf000
write(1, "Desktop\nDocuments\nDownloads\nISOS"..., 79) = 79

Todas as palavras no começo, como por exemplo mmap, você pode no seu 
terminal e rodar man mmap, e você verá o que essa função faz e quais são 
os argumentos que ela recebe, isso é legal para conhece passo a passo 
que o processo pode estar fazendo e o programador não te disse.

Explore bem o man do strace que ele pode te ajudar em alguns momentos 
durante sua vida com Linux.


Outro também bem parecido não sei se você conhece é o Ltrace, ele faz a 
mesma função que o Strace, porém o S do Strace, é System, e o L do 
Ltrace é LIbrary. Concluimos então que o Ltrace ele faz a mesma coisa só 
que para as funções das bibliotecas!


teste depois com alguns comandos colocar o strace -c comando , ou , 
ltrace -c comando.

Você verá quantas vezes uma chamada de sistema ou de biblioteca foi 
realizada e quantos erros podem ter retornados quando essa função foi 
chamada. Não é para se preocupar se o programa esta rodando normal, 
exemplo, vários programas realizam tentativas de abrir aquivos em 
caminhos especificos, quando não existem eles procuram em outros 
lugares, mas a função que tentou abrir o arquivo que não existe gerou um 
erro, mas não se preocupe com o tempo você pegará o jeito dele.

Outra dica boa, é as opções -f -F , são para os Forks gerados pelo 
processo que vc está monitorando, colocando essas opções vocês vão ver 
tudo do processo principal e incluindo tudo dos processos que foram fork 
desse principal!

Espero te ajudado!
Abs!

-Aslan



-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://lists.centos.org/pipermail/centos-pt-br/attachments/20120301/31963ed7/attachment.html 


Mais detalhes sobre a lista de discussão CentOS-pt-br