Red Hat Training

A Red Hat training course is available for RHEL 8

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.

Procedimiento

  1. Identifique las llamadas del sistema a supervisar.
  2. 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.
  3. 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.

  4. La herramienta strace sale cuando el programa se cierra.

    Para terminar la monitorización antes de que el programa trazado salga, pulse Ctrl C.

    • Si strace inició el programa, el programa termina junto con strace.
    • Si se adjunta strace a un programa que ya se está ejecutando, el programa termina junto con strace.
  5. 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.
Nota

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