The Android Developer Challenge is back! Submit your idea before December 2.

Inspecciona registros de seguimiento con Traceview

Traceview dejó de estar disponible. Si usas Android Studio 3.2 o versiones posteriores, en su lugar debes usar CPU Profiler para inspeccionar archivos .trace capturados mediante la instrumentación de tu app con la clase Debug, grabar seguimientos de métodos nuevos, guardar archivos .trace e inspeccionar en tiempo real el uso que los procesos de tu app hacen de la CPU.

Traceview es una herramienta que ofrece representaciones gráficas de los registros de seguimiento. Para generar los registros, instrumenta tu código con la clase Debug. Este método de seguimiento es muy preciso, ya que puedes especificar exactamente en qué lugar del código deseas comenzar a registrar datos de seguimiento y dejar de hacerlo. Si todavía no generaste estos registros de seguimiento ni los guardaste desde tu dispositivo conectado en tu máquina local, ve a Cómo generar registros de seguimiento mediante la instrumentación de tu app. Inspeccionar estos registros con Traceview te ayudará a depurar tu app y perfilar su rendimiento.

Sugerencia: Puedes usar dmtracedump desde la línea de comandos para generar diagramas gráficos de pila de llamadas de tus archivos de registro de seguimiento.

Si no necesitas ver registros de seguimiento que grabaste mediante la instrumentación de tu app con la clase Debug, puedes usar CPU Profiler, incluido en Android Studio 3.0 y versiones posteriores, para inspeccionar los subprocesos de tu app y grabar 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 quieres inspeccionar.
  4. Haz clic en Open.

Nota: Si intentas ver los registros de seguimiento de una app creada con ProGuard habilitado (compilación de modo de lanzamiento), es posible que algunos nombres de miembros y métodos estén ocultos. Puedes usar el archivo mapping.txt de Proguard para averiguar los nombres ocultos originales. Para obtener más información sobre este archivo, consulta la documentación de Proguard.

Nota: La posibilidad de ejecutar traceview desde la línea de comandos dejó de estar disponible.

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 en el que se describe cuándo cada subproceso ingresa en un método y sale de él.
  • Un panel de perfil en el que se resume la ejecución de cada subproceso durante el período del registro de seguimiento.

En las siguientes secciones se ofrece 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

Figura 1: Panel de cronograma de Traceview

Panel de perfil

Como se muestra en la figura 2, el panel de perfil proporciona una lista de cada método del sistema ejecutado durante el transcurso del registro de seguimiento y el tiempo dedicado a ejecutar esos métodos. Un método que llama a otro método se conoce como superior y los métodos a los que llama un superior se conocen como sus secundarios. Cuando haces clic en un método para seleccionarlo, se muestran sus métodos principales y secundarios debajo de dos nodos por separado.

Para cada método (nodo de nivel superior), en la tabla se muestran sus tiempos inclusivos y exclusivos (en milésimas de segundos), además del porcentaje del tiempo total. El tiempo exclusivo es el tiempo dedicado a ejecutar el código del método, mientras que el tiempo inclusivo es el tiempo dedicado a ejecutar el código del método y el tiempo dedicado a ejecutar a sus secundarios. La información sobre el tiempo también se ofrece en términos de tiempo de la CPU y tiempo real. El tiempo de la CPU solo considera el tiempo durante el que el subproceso usa el tiempo de la CPU de manera activa, mientras que el tiempo real ofrece información absoluta sobre el tiempo, desde el momento en el que tu app ingresa a un método hasta el momento en el que sale de ese método, independientemente de que subproceso esté activo o suspendido.

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 perfil de Traceview

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 sale durante la generación de perfiles, no se emite su nombre (se corrigió en Android 5.1 y versiones posteriores).
  • La VM reutiliza los ID de subproceso. Si un subproceso se detiene y comienza otro, es posible que tengan el mismo ID.