9.2. Monitorización de las llamadas al sistema de una aplicación con strace
La herramienta strace
permite monitorizar las llamadas al sistema (kernel) realizadas por una aplicación.
Requisitos previos
Procedimiento
- Identifique las llamadas del sistema a supervisar.
Inicie
strace
y adjúntelo al programa.Si el programa que desea supervisar no se está ejecutando, inicie
strace
y especifique el program:$ strace -fvttTyy -s 256 -e trace=call program
Si el programa ya se está ejecutando, busque su id de proceso (pid) y adjunte
strace
a él:$ ps -C program (...) $ strace -fvttTyy -s 256 -e trace=call -ppid
-
Sustituya call por las llamadas al sistema que deben mostrarse. Puede utilizar la opción
-e trace=call
varias veces. Si se omite,strace
mostrará todos los tipos de llamadas del sistema. Consulte la página del manual strace(1) para obtener más información. -
Si no desea rastrear ningún proceso o hilo bifurcado, omita la opción
-f
.
La herramienta
strace
muestra las llamadas al sistema realizadas por la aplicación y sus detalles.En la mayoría de los casos, una aplicación y sus bibliotecas realizan un gran número de llamadas y la salida
strace
aparece inmediatamente, si no se establece un filtro para las llamadas al sistema.La herramienta
strace
sale cuando el programa se cierra.Para terminar la monitorización antes de que el programa trazado salga, pulse
.-
Si
strace
inició el programa, el programa termina junto constrace
. -
Si se adjunta
strace
a un programa que ya se está ejecutando, el programa termina junto constrace
.
-
Si
Analizar la lista de llamadas al sistema realizadas por la aplicación.
- Los problemas de acceso o disponibilidad de recursos aparecen en el registro como llamadas que devuelven errores.
- Los valores pasados a las llamadas del sistema y los patrones de las secuencias de llamadas permiten conocer las causas del comportamiento de la aplicación.
- Si la aplicación se bloquea, la información importante probablemente esté al final del registro.
- La salida contiene mucha información innecesaria. Sin embargo, puede construir un filtro más preciso para las llamadas al sistema que le interesen y repetir el procedimiento.
Es ventajoso tanto ver la salida como guardarla en un archivo. Para ello, utilice el comando tee
:
$ strace ... |& tee your_log_file.log
Recursos adicionales
La página del manual strace(1):
$ man strace
- ¿Cómo puedo utilizar strace para rastrear las llamadas al sistema realizadas por un comando?
- Manual del usuario del conjunto de herramientas para desarrolladores de Red Hat