Traceview dejó de estar disponible. Si usas Android Studio 3.2 o versiones posteriores, debes cambiar al Generador de perfiles de CPU para inspeccionar archivos .trace
capturados por medio de la instrumentación de tu app con la clase Debug
, grabar seguimientos de métodos nuevos, guardar archivos .trace
y examinar en tiempo real cómo usan la CPU los procesos de tu app.
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 registros de seguimiento ni los copiaste desde el dispositivo conectado a tu máquina local, ve a Cómo generar registros de seguimiento mediante la instrumentación de tu app. Inspeccionar esos registros con Traceview te ayudará a depurar la app y generar un perfil de 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 los registros de seguimiento que guardaste mediante la instrumentación de tu app con la clase Debug
, puedes usar la herramienta Generador de perfiles de CPU incluida en Android Studio 3.0 y versiones posteriores para inspeccionar los subprocesos y registros de seguimiento de métodos de la app.
Cómo abrir un registro de seguimiento con Traceview
Para abrir un registro de seguimiento con Traceview desde Android Studio, completa los siguientes pasos:
- Abre Android Device Monitor.
- En Android Device Monitor, selecciona File > Open File.
- Navega hasta el archivo
.trace
que deseas inspeccionar. - Haz clic en Open.
Nota: Si intentas ver los registros de seguimiento de una app compilada con la reducción de código habilitada (como una compilación de actualización), es posible que algunos nombres de miembros y métodos estén ofuscados. Puedes usar el archivo mapping.txt
de ProGuard para averiguar los nombres ocultos originales.
Para obtener más información sobre este archivo, consulta Cómo decodificar un seguimiento de pila oculto.
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.
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 el tiempo real. El tiempo de CPU solo considera el tiempo durante el que el subproceso usa el tiempo de 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 qué 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.
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.