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
stracey adjúntelo al programa.Si el programa que desea supervisar no se está ejecutando, inicie
stracey especifique el program:$ strace -fvttTyy -s 256 -e trace=call programSi el programa ya se está ejecutando, busque su id de proceso (pid) y adjunte
stracea é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=callvarias veces. Si se omite,stracemostrará 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
stracemuestra 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
straceaparece inmediatamente, si no se establece un filtro para las llamadas al sistema.La herramienta
stracesale cuando el programa se cierra.Para terminar la monitorización antes de que el programa trazado salga, pulse .
-
Si
straceinició el programa, el programa termina junto constrace. -
Si se adjunta
stracea 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