Usando strace, como posso usá-lo para obter chamadas de rede e seriais

Usando strace, como posso usá-lo para obter chamadas de rede e seriais

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 stracesem (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 wgetinvocação (procurando apenas por itens de rede) e determinei que estas opções seriam úteis: -e socket,connect,close,write,read(descarte readse você não estiver interessado no lado receptor).

Com essas opções stracemostra 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

informação relacionada