Usando strace, ¿cómo lo uso para obtener la red y las llamadas en serie?

Usando strace, ¿cómo lo uso para obtener la red y las llamadas en serie?

Tengo un programa Python que se ejecuta en segundo plano, lo que necesito saber para fines de depuración es que necesito ver qué llamadas envía y recibe para serie, red y salida estándar.

Sé que si quiero ver la salida estándar, necesito el parámetro "-e write", pero ¿qué pasa con los demás? Y necesito que genere los 3 desde un solo comando, ya que será parte de una aplicación de consola que estoy creando.

Respuesta1

En general, al principio ejecutaría stracesin -e(eventualmente en un programa más pequeño/ligero con operaciones similares) y redirigiría el stderr a un archivo, luego miraría dentro del archivo para seleccionar el conjunto mínimo de -eopciones que necesita.

Para su caso particular, lo ejecuté en una wgetinvocación (buscando solo elementos de la red) y determiné que estas opciones serían útiles: -e socket,connect,close,write,read(elimine readsi no está interesado en el lado receptor).

Con estas opciones stracese muestra cosas como esta para las llamadas de red:

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

información relacionada