notas:strace
Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previaPróxima revisiónAmbos lados, revisión siguiente | ||
notas:strace [2020/04/17 01:15] – [Uso] cayu | notas:strace [2020/04/17 01:58] – [Extras y referencias útiles] cayu | ||
---|---|---|---|
Línea 1: | Línea 1: | ||
====== Strace ====== | ====== Strace ====== | ||
- | **strace** es una utilidad que nos puede ayudar en la comprobación de errores en procesos en el sistema operativo GNU/Linux. La misma sirve para monitorear las llamadas al sistema usadas por un determinado programa | + | **strace** es una utilidad que nos puede ayudar en la comprobación de errores |
- | Su uso más común consiste en arrancarlo | + | Se puede arrancar |
===== Uso ===== | ===== Uso ===== | ||
Línea 121: | Línea 121: | ||
} | } | ||
</ | </ | ||
+ | Para compilarlo procederemos a ejecutar **gcc**: | ||
+ | < | ||
+ | gcc socket.c -o socket | ||
+ | </ | ||
+ | Strace nos mostrará muchos datos, como llamadas al sistema para imprimi como files descriptors, | ||
+ | < | ||
+ | 00 strace -e trace=network, | ||
+ | 01 read(3, " | ||
+ | 02 read(3, " | ||
+ | 03 read(3, " | ||
+ | 04 read(3, " | ||
+ | 05 read(3, " | ||
+ | 06 read(3, " | ||
+ | 07 read(3, " | ||
+ | 08 read(3, "# The \" | ||
+ | 09 read(3, "", | ||
+ | 10 read(3, "# Generated by NetworkManager\nna" | ||
+ | 11 read(3, "", | ||
+ | 12 socket(AF_UNIX, | ||
+ | 13 connect(3, {sa_family=AF_UNIX, | ||
+ | 14 socket(AF_UNIX, | ||
+ | 15 connect(3, {sa_family=AF_UNIX, | ||
+ | 16 read(3, "# / | ||
+ | 17 read(3, "", | ||
+ | 18 read(3, " | ||
+ | 19 read(3, " | ||
+ | 20 read(3, "", | ||
+ | 21 read(3, " | ||
+ | 22 read(3, " | ||
+ | 23 read(3, " | ||
+ | 24 socket(AF_INET, | ||
+ | 25 setsockopt(3, | ||
+ | 26 connect(3, {sa_family=AF_INET, | ||
+ | 27 sendto(3, " | ||
+ | 28 recvfrom(3, " | ||
+ | 29 socket(AF_INET, | ||
+ | 30 setsockopt(3, | ||
+ | 31 connect(3, {sa_family=AF_INET, | ||
+ | 32 write(3, "GET / | ||
+ | 33 read(3, "< | ||
+ | 34 write(2, "< | ||
+ | 35 < | ||
+ | 36 <body bgcolor=" | ||
+ | 37 < | ||
+ | 38 < | ||
+ | 39 </ | ||
+ | 40 </ | ||
+ | 41 ) = 178 | ||
+ | 42 read(3, "", | ||
+ | 43 shutdown(3, SHUT_RDWR) | ||
+ | 44 +++ exited with 0 +++ | ||
+ | 45 | ||
+ | </ | ||
+ | |||
+ | En la línea 00 podemos ver el comando completo, vemos llamadas al DNS en varios read y un connect en la línea **26** para efectivamente realizar la consulta, la resolución del nombre en la línea **28** y efectivamente el connect de lo que queremos obtener en la línea **31**, el GET que enviamos en la línea **32**, su lectura y su escritura en pantalla. | ||
+ | |||
+ | Si por ejemplo solo queremos ver los system calls //open, close, read, y write// podemos proceder de la siguiente forma : | ||
+ | < | ||
+ | strace -e trace=open, | ||
+ | close(3) | ||
+ | read(3, " | ||
+ | read(3, " | ||
+ | read(3, " | ||
+ | read(3, " | ||
+ | read(3, " | ||
+ | read(3, " | ||
+ | read(3, " | ||
+ | close(3) | ||
+ | read(3, "# The \" | ||
+ | read(3, "", | ||
+ | close(3) | ||
+ | read(3, "# Generated by NetworkManager\nna" | ||
+ | read(3, "", | ||
+ | close(3) | ||
+ | close(3) | ||
+ | close(3) | ||
+ | read(3, "# / | ||
+ | read(3, "", | ||
+ | close(3) | ||
+ | close(3) | ||
+ | read(3, " | ||
+ | close(3) | ||
+ | read(3, " | ||
+ | read(3, "", | ||
+ | close(3) | ||
+ | close(3) | ||
+ | read(3, " | ||
+ | close(3) | ||
+ | read(3, " | ||
+ | close(3) | ||
+ | close(3) | ||
+ | read(3, " | ||
+ | close(3) | ||
+ | close(3) | ||
+ | write(3, "GET / | ||
+ | read(3, "< | ||
+ | write(2, "< | ||
+ | < | ||
+ | <body bgcolor=" | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | ) = 178 | ||
+ | read(3, "", | ||
+ | close(3) | ||
+ | +++ exited with 0 +++ | ||
+ | </ | ||
+ | ===== Extras y referencias útiles ===== | ||
+ | A veces también puede servirnos **ltrace**, que es una utilidad de depuración, | ||
+ | |||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// |
notas/strace.txt · Última modificación: 2020/04/17 02:11 por cayu