Strace es una herramienta de utilidad de línea de comandos de depuración muy poderosa que ayuda a solucionar los problemas al monitorear las llamadas al sistema y las señales del programa específico. En caso de que no dispongamos del código fuente, se puede utilizar strace para analizar cómo interactúa un programa con el sistema. En este artículo, analizaremos algunos comandos de strace importantes para solucionar problemas y depurar programas y procesos en Linux.
Instalación
La instalación de las herramientas de utilidad de strace es un proceso sencillo y sencillo. Use el siguiente comando para instalar la aplicación según su distribución de Linux.
Debian/Ubuntu
$ sudo apt install strace
$ yum install strace
Verifique la instalación ejecutando el siguiente comando
$ strace -V
Salida:
1. Rastree las llamadas del sistema Linux Command usando strace
Strace es útil al rastrear las llamadas al sistema de comandos de Linux. En este ejemplo, un comando simple pwd se utiliza para rastrear.
$ strace pwd
Salida:
2. Redirigir el registro de seguimiento en un archivo
El registro de seguimiento de llamadas del sistema se puede redirigir a un archivo usando el comando strace como:
$ strace -o pwd-log.txt pwd
Use el comando cat para encontrar el contenido del archivo como:
$ cat pwd-log.txt
3. Use strace para imprimir el resumen de llamadas del sistema en lugar de la salida normal.
El uso de strace con la opción -c permite imprimir el resumen del registro. En este ejemplo, se presenta un resumen del comando de Linux pwd.
$ strace -c pwd
Salida:
4. Rastree llamadas de sistema particulares usando strace
El comando Strace con la opción -e y el tipo de rastreo (lectura, escritura) se pueden usar para rastrear llamadas específicas del sistema. En este ejemplo, se rastrea la llamada del sistema de escritura para el comando pwd.
$ strace -e trace=write pwd
Salida:
5. Comando Strace para imprimir la marca de tiempo de cada llamada al sistema.
El comando Strace con la opción -r se puede usar para imprimir todas las marcas de tiempo relativas de cada llamada al sistema.
$ strace -r pwd
Salida:
6. Rastreo usando ID de proceso
Si ya hay algún proceso ejecutándose en el sistema, las llamadas al sistema se pueden rastrear usando el comando strace con la opción -p junto con la identificación del proceso. En este ejemplo, la identificación del proceso de nginx se usa para rastrear
Sintaxis
$ strace -p <process id>
$ strace -p 12842
El rastreo se puede detener presionando ctrl+c.
7. Comando Strace para imprimir la salida de depuración
El comando Strace con la opción -d se puede usar para imprimir la salida de depuración. En este ejemplo, se usa un comando simple de Linux pwd para rastrear.
$ strace -d pwd
Salida:
8. Comando Strace para imprimir el tiempo dedicado a las llamadas al sistema.
El comando Strace con la opción -T proporciona el tiempo dedicado a las llamadas al sistema como:
$ strace -T pwd
Salida:
9. Comando Strace para imprimir puntero de instrucción
Comando Strace con la opción -i imprime el puntero de instrucción. En este ejemplo, se usa un comando simple de Linux pwd para rastrear.
$ strace -i pwd
Salida:
10. Comando Strace para rastrear llamadas al sistema según una condición específica
El comando Strace se puede usar para rastrear llamadas al sistema en función de condiciones específicas, como memoria, proceso, CPU, etc. En este ejemplo, las llamadas al sistema relacionadas con la administración de memoria se rastrean para un comando simple de Linux pwd.
$ strace -q -e contraseña de memoria
Salida:
11. Comando Strace para rastrear llamadas al sistema relacionadas con la señal
Las llamadas al sistema relacionadas con la señal se pueden rastrear definiendo el tipo de rastreo en el comando. En este ejemplo nc -v -n localhost 80 se utiliza para rastrear llamadas al sistema relacionadas con la señal.
$ strace -e trace=signal nc -v -n 127.0.0.1 80
Salida:
Conclusión
En este artículo, aprendimos qué es la herramienta de utilidad strace y cuándo se puede usar. Además, he cubierto algunos comandos importantes de strace para solucionar problemas y depurar llamadas y procesos del sistema.