En este artículo aprenderemos cómo usar el comando Strace de Linux. Strace es una poderosa herramienta de línea de comandos para depurar y solucionar problemas de programas en el sistema operativo Linux. Captura y registra todas las llamadas al sistema realizadas por un proceso y las señales recibidas por el proceso.
Muestra el nombre de cada llamada al sistema junto con sus argumentos entre paréntesis y su valor de retorno a error estándar; opcionalmente, también puede redirigirlo a un archivo.
Normalmente, strace está disponible de forma predeterminada si no está presente en su sistema, instale strace usando el siguiente comando:
dnf install strace
Puede ejecutar un comando con strace o pasarle un PID usando la opción -p como en los siguientes ejemplos:
Rastrear llamadas al sistema de comandos de Linux:
En este ejemplo, simplemente ejecutaremos un comando "df -h" seguido de strace para rastrear las llamadas del sistema para el comando df -h.
strace df -h
La salida se verá así:
En el resultado anterior, puede ver varios tipos de llamadas al sistema realizadas por el comando df -h, por ejemplo, "open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) =3″
donde,
- abierto:es el tipo de llamada al sistema
- (“/etc/ld.so.cache”, O_RDONLY|O_CLOEXEC) – argumento de llamada al sistema
- 3:valor de retorno de la llamada al sistema
Rastrear el PID del proceso de Linux:
Si un proceso ya se está ejecutando, puede rastrearlo simplemente pasando su PID a strace; esto llenará su pantalla con una salida continua que muestra las llamadas al sistema realizadas por el proceso, para finalizar, presione CTRL + C.
strace -p 7302
Para obtener un resumen del tiempo total, las llamadas y el error de una llamada al sistema, use el indicador -c como se muestra a continuación;
strace -pc 7583
Puntero de instrucciones de impresión durante la llamada al sistema:
El indicador -i muestra el puntero de instrucción en el momento de cada llamada al sistema realizada por el programa.
strace -i df -h
Mostrar el tiempo de cada línea de salida de seguimiento:
También puede imprimir la hora actual para cada línea en la salida de seguimiento, pasando el indicador -t.
strace -t df -h
Tiempo de comando de impresión empleado en llamadas al sistema:
Para mostrar la diferencia de tiempo entre el inicio y el final de cada llamada al sistema realizada por un programa, utilice la opción -T.
strace -T df -h
Rastrear solo llamadas específicas del sistema:
En el siguiente comando, trace=write se conoce como expresión calificadora, donde "trace" es un calificador (otros incluyen señal, abreviatura, detallado, sin formato, lectura o escritura) y "write" es el valor del calificador.
El siguiente comando en realidad muestra las llamadas del sistema para imprimir la salida df -h en la salida estándar.
strace -e trace=write df -h
Algunos comandos adicionales sobre el calificador de seguimiento son los siguientes:
strace -e trace=open,close df -h
strace -e trace=open,close,read,write df -h
strace -e trace=all df -h
Rastrear llamadas al sistema en función de una determinada condición:
Veremos cómo rastrear llamadas al sistema relacionadas con una clase dada de eventos. El siguiente comando se puede utilizar para rastrear todas las llamadas al sistema relacionadas con la gestión de procesos.
strace -q -e trace=process df -h
Luego, para rastrear todas las llamadas al sistema que toman un nombre de archivo como argumento, use el siguiente comando:
strace -q -e trace=file df -h
Del mismo modo, puede rastrear todas las llamadas al sistema relacionadas con la red, la memoria y las señales utilizando los siguientes comandos:
strace -q -e trace=memory df -h
strace -e trace=network df -h
strace -e trace=signal df -h
Redireccionar salida de seguimiento a archivo:
Para escribir los mensajes de rastreo enviados a un error estándar en un archivo, use la opción -o. Esto significa que solo la salida del comando se imprime en la pantalla como se muestra a continuación.
strace -o strace_message.txt df -h
Todas las llamadas al sistema se escribieron en el archivo strace_message.txt. Use el comando cat para ver las llamadas del sistema.
cat strace_message.txt
Mostrar salida de depuración de Strace:
Para mostrar información de depuración para la herramienta strace, use el indicador -d.
strace -d df -h
En conclusión, strace es una herramienta para diagnosticar la causa de la falla del programa. es una poderosa herramienta para depurar y solucionar problemas. Es prácticamente útil para administradores de sistemas, programadores y piratas informáticos experimentados.