Red Hat Training

A Red Hat training course is available for RHEL 8

Capítulo 9. Grabación de las interacciones de la aplicación

El código ejecutable de las aplicaciones interactúa con el código del sistema operativo y las bibliotecas compartidas. La grabación de un registro de actividad de estas interacciones puede proporcionar suficiente información sobre el comportamiento de la aplicación sin necesidad de depurar el código real de la misma. Por otra parte, el análisis de las interacciones de una aplicación puede ayudar a determinar las condiciones en las que se manifiesta un fallo.

9.1. Herramientas útiles para registrar las interacciones de las aplicaciones

Red Hat Enterprise Linux ofrece múltiples herramientas para analizar las interacciones de una aplicación.

strace

La herramienta strace permite principalmente registrar las llamadas al sistema (funciones del núcleo) utilizadas por una aplicación.

  • La herramienta strace puede proporcionar una salida detallada sobre las llamadas, porque strace interpreta los parámetros y los resultados con el conocimiento del código del núcleo subyacente. Los números se convierten en los respectivos nombres de las constantes, las banderas combinadas a nivel de bits se expanden a la lista de banderas, los punteros a las matrices de caracteres se desreferencian para proporcionar la cadena real, y más. Puede faltar el soporte para las características más recientes del kernel.
  • Puede filtrar las llamadas rastreadas para reducir la cantidad de datos capturados.
  • El uso de strace no requiere ninguna configuración particular, excepto la configuración del filtro de registro.
  • El rastreo del código de la aplicación con strace provoca una importante ralentización de la ejecución de la aplicación. Como resultado, strace no es adecuado para muchas implantaciones de producción. Como alternativa, considere el uso de ltrace o SystemTap.
  • La versión de strace disponible en Red Hat Developer Toolset también puede realizar la manipulación de llamadas al sistema. Esta capacidad es útil para la depuración.
ltrace

La herramienta ltrace permite registrar las llamadas al espacio de usuario de una aplicación en objetos compartidos (bibliotecas dinámicas).

  • La herramienta ltrace permite rastrear las llamadas a cualquier biblioteca.
  • Puede filtrar las llamadas rastreadas para reducir la cantidad de datos capturados.
  • El uso de ltrace no requiere ninguna configuración particular, excepto la configuración del filtro de registro.
  • La herramienta ltrace es ligera y rápida, y ofrece una alternativa a strace: es posible rastrear las respectivas interfaces en bibliotecas como glibc con ltrace en lugar de rastrear las funciones del núcleo con strace.
  • Dado que ltrace no maneja un conjunto conocido de llamadas como strace, no intenta explicar los valores pasados a las funciones de la biblioteca. La salida de ltrace sólo contiene números y punteros en bruto. La interpretación de la salida de ltrace requiere consultar las declaraciones de interfaz reales de las bibliotecas presentes en la salida.
Nota

En Red Hat Enterprise Linux 8.0, un problema conocido impide que ltrace rastree archivos ejecutables del sistema. Esta limitación no se aplica a los archivos ejecutables construidos por los usuarios.

SystemTap

SystemTap es una plataforma de instrumentación para sondear los procesos en ejecución y la actividad del kernel en el sistema Linux. SystemTap utiliza su propio lenguaje de scripting para programar manejadores de eventos personalizados.

  • En comparación con el uso de strace y ltrace, la creación de scripts para el registro supone más trabajo en la fase de configuración inicial. Sin embargo, las capacidades de scripting amplían la utilidad de SystemTap más allá de la producción de registros.
  • SystemTap funciona creando e insertando un módulo del kernel. El uso de SystemTap es eficiente y no crea una ralentización significativa del sistema o de la ejecución de aplicaciones por sí mismo.
  • SystemTap viene con un conjunto de ejemplos de uso.
GDB

El depurador de GNU (GDB) está pensado principalmente para la depuración, no para el registro. Sin embargo, algunas de sus características lo hacen útil incluso en el escenario donde la interacción de una aplicación es la actividad principal de interés.

  • Con GDB, es posible combinar convenientemente la captura de un evento de interacción con la depuración inmediata de la ruta de ejecución posterior.
  • El BGF es más adecuado para analizar la respuesta a eventos infrecuentes o singulares, tras la identificación inicial de la situación problemática por parte de otras herramientas. El uso del BGF en cualquier escenario con eventos frecuentes resulta ineficaz o incluso imposible.