Comando Strace en Linux con ejemplos

Strace es una de las herramientas de instrucción, diagnóstico y monitoreo de procesos más poderosas de Linux. También actúa como una herramienta de depuración que ayuda a solucionar problemas. Se utiliza principalmente para los siguientes propósitos:

  • Programas de depuración
  • Programas de resolución de problemas
  • Interceptar llamadas del sistema por un proceso
  • Grabar llamadas al sistema por un proceso
  • Señales recibidas por un proceso
  • Seguimiento de procesos en ejecución

En caso de que el código fuente no esté disponible, strace se usa para analizar cómo un programa interactúa con el sistema para depurar la ejecución del programa . Devuelve el nombre de cada llamada al sistema junto con su argumento entre paréntesis y su valor de retorno a error estándar.

Instalación de la herramienta de monitoreo de procesos strace

Para instalar la herramienta strace, use los siguientes comandos según su distribución de Linux.

En el caso de Debian/Ubuntu

$sudo apt install strace

En el caso de CentOS/RedHat

$yum install strace

Trabajar con la herramienta de monitoreo de procesos de Strace

1. Para obtener la llamada al sistema, el argumento y el resultado de la llamada.

$strace ls

Nota: Aquí, «ls» es el comando cuya llamada al sistema debe rastrearse.

strace command in Linux

strace command in Linux

Como puede verse, muestra la llamada al sistema, el argumento (entre paréntesis) y el resultado de la llamada del comando ls. Y +++ salió con 0 +++ , en la última línea indica que el estado de salida es 0, lo que significa que no hubo error. En caso de error, el código de salida es -1.

2. Para contar el número de llamadas al sistema.

$strace -c ls

Nota: Aquí, «ls» es el comando cuya llamada al sistema debe rastrearse.

To count number of system calls

Como se puede observar, muestra el número de veces que se realizó cada llamada al sistema e imprime el total e incluso muestra el número y tiempo empleado en cada llamada.

3. Para rastrear llamadas al sistema particulares o específicas.

$strace -e trace=write ls

Nota: Aquí, «ls» es el comando cuya llamada al sistema debe rastrearse. Y el nombre de la llamada al sistema que se va a rastrear es write .

To trace particular or specific system calls

Como puede verse, solo muestra el nombre, el argumento y el resultado de la llamada al sistema de escritura.

4. Para rastrear llamadas al sistema relacionadas con la red

$strace -e trace=network nc -v -n 127.0.0.1 801

Nota: Aquí, “nc -v -n 127.0.0.1 801” es el comando cuya llamada al sistema debe rastrearse. Y el nombre de la llamada al sistema que se va a rastrear es la red.

To trace network related system calls

Como puede verse, solo muestra el nombre, el argumento y el resultado de la llamada al sistema de red.

5. Para rastrear llamadas al sistema relacionadas con la señal

$strace -e trace=signal nc -v -n 127.0.0.1 801

Nota: Aquí, “nc -v -n 127.0.0.1 801” es el comando cuya llamada al sistema debe rastrearse. Y el nombre de la llamada al sistema que se va a rastrear es señal.

To trace signal related system calls

Como puede verse, solo muestra el nombre, el argumento y el resultado de la llamada al sistema de señales.

6. Para imprimir la marca de tiempo de cada llamada.

$strace -r ls

Nota: Aquí, «ls» es el comando cuya llamada al sistema debe rastrearse.

To print timestamp of each call

To print timestamp of each call

Como se puede ver, muestra una marca de tiempo relativa al ingresar a cada llamada al sistema. Registra la diferencia de tiempo entre el comienzo de sucesivas llamadas al sistema.

7. Para imprimir el tiempo dedicado a las llamadas al sistema.

$strace -T ls

Nota: Aquí, «ls» es el comando cuya llamada al sistema debe rastrearse.

To print time spent on system calls

To print time spent on system calls

Como se puede ver, el tiempo dedicado a cada llamada se imprime al final de cada línea.

8. Para imprimir la hora del reloj de pared de cada llamada al sistema.

$strace -t ls

Nota: Aquí, «ls» es el comando cuya llamada al sistema debe rastrearse.

To print wall clock time of each system call

To print wall clock time of each system call

Como se puede ver, el prefijo de cada línea es el tiempo del reloj de pared propio de la llamada del sistema.

9. Para imprimir el puntero de instrucciones.

$strace -i ls

Nota: Aquí, «ls» es el comando cuya llamada al sistema debe rastrearse.

To print wall clock time of each system call

To print wall clock time of each system call

Como puede verse, el puntero de instrucción se imprime en cada línea de salida.

10. Para imprimir la salida en un archivo

$strace -o output.txt ls

Nota: Aquí, «ls» es el comando cuya llamada al sistema debe rastrearse. Y output.txt es el nombre del archivo en el que se almacenará la salida.

To print wall clock time of each system call

To print wall clock time of each system call

Como puede verse, la salida del comando se almacena en el archivo output.txt.

Publicación traducida automáticamente

Artículo escrito por manav014 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *