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, porquestrace
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 deltrace
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.
-
La herramienta
- 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 astrace
: es posible rastrear las respectivas interfaces en bibliotecas comoglibc
conltrace
en lugar de rastrear las funciones del núcleo constrace
. -
Dado que
ltrace
no maneja un conjunto conocido de llamadas comostrace
, no intenta explicar los valores pasados a las funciones de la biblioteca. La salida deltrace
sólo contiene números y punteros en bruto. La interpretación de la salida deltrace
requiere consultar las declaraciones de interfaz reales de las bibliotecas presentes en la salida.
NotaEn 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.-
La herramienta
- 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
yltrace
, 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.
-
En comparación con el uso de
- 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.