Herramientas de usuario

Herramientas del sitio


notas:strace

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
notas:strace [2020/04/17 01:59] – [Ejemplo de ejecución] cayunotas:strace [2020/04/17 02:11] (actual) – [Extras y referencias útiles] cayu
Línea 1: Línea 1:
 ====== Strace ====== ====== Strace ======
  
-**strace** es una utilidad que nos puede ayudar en la comprobación de errores y cuellos de botella en procesos en el sistema operativo GNU/Linux. La misma sirve para monitorear las llamadas al sistema usadas por un determinado programa, todas las señales que éste recibe y cuando tiempo toma cada llamada. Esto es posible por una característica del núcleo linux llamada **ptrace**.+**strace** es una utilidad que nos puede ayudar en la comprobación de errores y cuellos de botella en procesos en el sistema operativo GNU/Linux. La misma sirve para monitorear las llamadas al sistema usadas por un determinado programa, todas las señales que este recibe y cuando tiempo toma cada llamada. Esto es posible por una característica del núcleo linux llamada **ptrace**.
  
 Se puede arrancar junto al programa al que se le efectúa el trace, imprime la lista de llamadas al sistema que dicho programa ejecuta. Es útil para averiguar la causa del fallo de un programa determinado porque informa de situaciones en las que por ejemplo, el programa está intentando acceder a un fichero que no existe o que no tiene permiso de lectura o tiempos de espera muy altos al intentar obtener un servicio remoto por red. Se puede arrancar junto al programa al que se le efectúa el trace, imprime la lista de llamadas al sistema que dicho programa ejecuta. Es útil para averiguar la causa del fallo de un programa determinado porque informa de situaciones en las que por ejemplo, el programa está intentando acceder a un fichero que no existe o que no tiene permiso de lectura o tiempos de espera muy altos al intentar obtener un servicio remoto por red.
Línea 7: Línea 7:
 ===== Uso ===== ===== Uso =====
  
-En simples palabras su ejecución mas simple es strace -p //pid//+En simples palabras su ejecución más simple es strace -p //pid//
  
  
-Si ejecutamos un **strace** al numero de proceso del squid obtendríamos algo como esto+Si ejecutamos un **strace** al número de proceso del squid obtendríamos algo como esto
  
 <code> <code>
Línea 125: Línea 125:
 gcc socket.c -o socket gcc socket.c -o socket
 </code> </code>
-Strace nos mostrará muchos datos, como llamadas al sistema para imprimi como files descriptors, llamadas a memoria etc. Si solo nos interesa las llamadas a funciones de red, podemos agregarle los siguientes argumentos //-e trace=network,read,write// o simplemente //-e trace=network//+Strace nos mostrará muchos datos, como llamadas al sistema para imprimir datos en pantalla, files descriptors, llamadas a memoria etc. 
 +Si solo nos interesan las llamadas a funciones de red, podemos agregarle los siguientes argumentos //-e trace=network,read,write// o simplemente //-e trace=network//
 <code> <code>
 00    strace -e trace=network,read,write ./socket  cayu.com.ar 80 00    strace -e trace=network,read,write ./socket  cayu.com.ar 80
Línea 269: Línea 270:
 </code> </code>
 ===== Extras y referencias útiles ===== ===== Extras y referencias útiles =====
-A veces también puede servirnos **ltrace**, que es una utilidad de depuración, que se usa para mostrar las llamadas que una aplicación de espacio de usuario hace a las bibliotecas compartidas.+A veces también puede servirnos **ltrace**, que es una utilidad de depuración, que se usa para mostrar las llamadas que una aplicación de espacio de usuario hace a las bibliotecas compartidas. Pero eso es para otra nota.
  
   * https://www.linkedin.com/learning/faster-python-services/strace   * https://www.linkedin.com/learning/faster-python-services/strace
notas/strace.1587088742.txt.gz · Última modificación: 2020/04/17 01:59 por cayu