Descripción general
strace rastrea todas las llamadas al sistema y eventos de señales de un proceso, ya sea ejecutando un comando específico o adjuntándose a un proceso en ejecución. Muestra esta información en tiempo real, lo que es esencial para comprender el comportamiento de bajo nivel de un programa, como la E/S de archivos, la comunicación de red y la gestión de memoria.
Funciones principales
- Rastreo de llamadas al sistema y señales de un proceso
- Visualización de argumentos, valores de retorno y códigos de error para cada llamada
- Adjuntarse a un proceso en ejecución para rastrearlo
- Rastreo de procesos hijos junto con el proceso padre
- Filtrado de llamadas al sistema o señales específicas
Opciones principales
strace ofrece varias opciones para controlar finamente el método de rastreo y el formato de salida.
Opciones de rastreo básicas
Control de salida
Filtrado
Comando generado:
Combina los comandos.
Descripción:
`strace` Ejecutando el comando.
Combina las opciones anteriores para ejecutar virtualmente los comandos junto con la IA.
Ejemplos de uso
Varios ejemplos de uso de strace.
Rastreo de comando simple
strace ls
Rastrea las llamadas al sistema del comando `ls`.
Guardar resultados del rastreo en un archivo
strace -o date_trace.log date
Guarda las llamadas al sistema del comando `date` en el archivo `date_trace.log`.
Rastrear un proceso en ejecución
strace -p 12345
Se adjunta a un proceso con PID 12345 para rastrear sus llamadas al sistema. (Reemplace 12345 con el ID de proceso real).
Rastrear procesos hijos
strace -f bash -c "echo Hello, strace!"
Cuando se ejecuta el comando `echo` en una shell `bash`, rastrea las llamadas al sistema tanto de `bash` como de `echo`.
Filtrar solo llamadas al sistema específicas
strace -e trace=open,read,write cat /etc/hosts
Rastrea si el comando `cat /etc/hosts` utiliza las llamadas al sistema `open`, `read`, `write`.
Verificar el tiempo de ejecución de las llamadas al sistema
strace -T ls
Muestra el tiempo empleado en cada llamada al sistema.
Instalación
strace puede no estar incluido por defecto en la mayoría de las distribuciones de Linux. Puede instalarlo usando los siguientes comandos.
Debian/Ubuntu
sudo apt update && sudo apt install strace
Instala usando el gestor de paquetes APT.
CentOS/RHEL 7
sudo yum install strace
Instala usando el gestor de paquetes YUM.
Fedora/RHEL 8+
sudo dnf install strace
Instala usando el gestor de paquetes DNF.
Consejos y precauciones
strace es potente, pero hay algunas consideraciones al usarlo.
Impacto en el rendimiento
strace intercepta las llamadas al sistema de un proceso, por lo que puede afectar significativamente el rendimiento del programa rastreado. Esto es especialmente cierto para programas con mucha E/S. Úselo con precaución en entornos de producción.
Interpretación de la salida
La salida de strace puede ser muy extensa, por lo que es recomendable filtrar la información necesaria (-e) o guardarla en un archivo (-o) para su análisis. Puede encontrar información detallada sobre llamadas al sistema específicas usando el comando `man 2 <nombre_llamada_sistema>`.
Permisos
Se requieren privilegios de `root` para rastrear procesos de otros usuarios o para rastrear el comportamiento general del sistema.
Diferencia con herramientas de depuración
strace opera a nivel de llamada al sistema y, a diferencia de depuradores como `gdb`, no puede manipular directamente variables internas del programa, llamadas a funciones o ver rastreos de pila. Ambas herramientas pueden usarse de forma complementaria.