Inspecciona registros de seguimiento con Traceview

Traceview es una herramienta que ofrece representaciones gráficas de los registros de seguimiento. Puedes generar los registros instrumentando tu código con la clase Debug. Este método de seguimiento es muy preciso, ya que puedes especificar exactamente en qué parte del código deseas iniciar y detener el registro de datos de seguimiento. Si aún no generaste estos registros de seguimiento ni los guardaste desde tu dispositivo conectado a tu máquina local, consulta Cómo generar registros de seguimiento mediante la instrumentación de tu app. Inspeccionar estos registros con Traceview te ayuda a depurar tu app y generar un perfil de su rendimiento.

Si no necesitas ver los registros de seguimiento que grabaste instrumentando tu app con la clase Debug, puedes usar el Generador de perfiles de CPU incluido en Android Studio 3.0 y versiones posteriores para inspeccionar los subprocesos de tu app y registrar seguimientos de métodos.

Cómo abrir un registro de seguimiento con Traceview

Para abrir un registro de seguimiento con Traceview desde Android Studio, completa los siguientes pasos:

  1. Abre Android Device Monitor.
  2. En Android Device Monitor, selecciona File > Open File.
  3. Navega hasta el archivo .trace que deseas inspeccionar.
  4. Haz clic en Abrir.

Descripción general de Traceview

Después de abrir un registro de seguimiento, Traceview muestra datos del registro en los dos paneles siguientes:

  • Un panel de cronograma que describe cuándo cada subproceso entra y sale de un método
  • Un panel de perfil que resume la ejecución de cada subproceso durante el período del registro de seguimiento

En las siguientes secciones, se proporciona información adicional sobre los paneles de salida de Traceview.

Panel de cronograma

En la figura 1 se muestra un primer plano del panel de cronograma. La ejecución de cada subproceso se muestra en su propia fila; el tiempo transcurrido aumenta en el lado derecho. Cada método se muestra en colores diferentes. Las líneas finas debajo de la primera fila muestran los elementos secundarios (desde la entrada hasta la salida) del método seleccionado.

Panel de cronograma de Traceview que muestra la ejecución de subprocesos a lo largo del tiempo

Figura 1: Panel de cronograma de Traceview

Panel de perfil

Como se muestra en la figura 2, el panel de perfiles proporciona una lista de todos los métodos que el sistema ejecutó durante el período del registro de seguimiento y el tiempo que se tardó en ejecutarlos. Un método que llama a otro se denomina superior, y los métodos a los que llama un método superior se denominan secundarios. Cuando seleccionas un método haciendo clic en él, se muestran sus métodos superiores y secundarios en dos nodos separados.

Para cada método (nodo de nivel superior), la tabla informa la siguiente información de sincronización (en milisegundos), así como el porcentaje del tiempo total:

  • Tiempos inclusivos y exclusivos: El tiempo exclusivo es el tiempo que se dedica a ejecutar el código propio del método, mientras que el tiempo inclusivo es el tiempo que se dedica a ejecutar el código propio del método más el tiempo que se dedica a ejecutar sus elementos secundarios.
  • CPU and real time: El tiempo de CPU solo considera el tiempo en el que el subproceso usa activamente el tiempo de CPU, y el tiempo real proporciona información de tiempo absoluta desde el momento en que tu app ingresa a un método hasta que sale de él, independientemente de si el subproceso está activo o en suspensión.

Para cada nodo de nivel superior en el panel de perfil, la columna Calls + Rec, Calls/Total en la tabla (que no se muestra en la figura 2) indica el número de llamadas al método y el número de llamadas recursivas. O bien, para los métodos superiores y secundarios, en esta columna se muestra el número de llamadas en las que el método era superior o secundario del método en el nodo de nivel superior.

Panel de perfiles de Traceview que muestra los tiempos de métodos inclusivos y exclusivos

Figura 2: Panel de perfil de Traceview

Problemas conocidos de Traceview

El registro de Traceview no administra los subprocesos con eficiencia, lo que genera los siguientes problemas:

  • Si un subproceso se cierra durante la generación de perfiles, no se emite el nombre del subproceso (se corrigió en Android 5.1 y versiones posteriores).
  • La VM reutiliza los ID de subproceso. Si un subproceso se detiene y se inicia otro, es posible que obtengan el mismo ID.