Eu tenho um programa python que roda em segundo plano, o que preciso saber para fins de depuração é que preciso ver quais chamadas ele está enviando e recebendo para serial, rede e para stdout.
Eu sei que se quiser ver o stdout, preciso do parâmetro "-e write", mas e os outros? E preciso gerar todos os três em um único comando, pois fará parte de um aplicativo de console que estou criando.
Responder1
Em geral, você executaria primeiro strace
sem (eventualmente em um programa menor/mais leve com operações semelhantes) e redirecionaria o stderr para um arquivo e, em seguida, espiaria dentro do arquivo para selecionar o conjunto mínimo de opções necessárias.-e
-e
Para o seu caso específico, executei-o em uma wget
invocação (procurando apenas por itens de rede) e determinei que estas opções seriam úteis: -e socket,connect,close,write,read
(descarte read
se você não estiver interessado no lado receptor).
Com essas opções strace
mostra coisas assim para as chamadas de rede:
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 4
connect(4, {sa_family=AF_INET, sin_port=htons(443), sin_addr=inet_addr("74.125.202.121")}, 16) = 0
write(4, "\26\3\1\0\302\1\0\0\276\3\1\374\2\223/\332\3545\34\2628u3-3hT\25s\"\310\215"..., 199) = 199
read(4, "\26\3\1\0]", 5) = 5
read(4, "\2\0\0Y\3\1U\251X\245#\313\3544a\17\372\276\340^%\177y\270asQ\255^\7B\212"..., 93) = 93
...
close(4) = 0