Obtén un ejemplo de la pila de llamadas

Las pilas de llamadas son útiles para identificar los hotspots de la CPU, es decir, las secciones de código que tardan mucho en ejecutarse. Las pilas de llamadas te ayudan a comprender qué parte del código se ejecutó y el motivo de la invocación.

Descripción general de la muestra de pila de llamadas

Para tomar muestras del registro de pila de llamadas, selecciona la tarea Find CPU Hotspots (Callstack Sample) en la pestaña Home del Generador de perfiles de Android Studio. Después de analizar la grabación, verás los siguientes elementos visuales:

Para complementar los cronogramas de Uso de CPU y Interacciones, la sección Subprocesos muestra fotogramas para cada llamada que realizan tu app y el sistema. A continuación, se incluyen algunas sugerencias para navegar por la muestra de la pila de llamadas:

  • Expande el subproceso que te interese y usa combinaciones de teclas para navegar por los marcos de pila. Haz clic en un marco de pila para obtener detalles sobre el evento y las llamadas relacionadas en el panel Análisis.
  • Para filtrar por ciertos tipos de marcos de pila, haz clic en Contraer marcos y marca los tipos de marcos que quieras ocultar. Si se contraen los fotogramas, se quitan de las secciones Threads y Analysis. Según tu investigación, es posible que desees contraer los fotogramas de la máquina virtual de Java (por ejemplo, android::AndroidRuntime::start y art::{...}) y el kernel del sistema (por ejemplo, [kernel.kallsyms]+{offset}). Por lo general, esto corresponde a contraer los fotogramas relacionados con [kernel.kallsyms], /apex/ y /system/*.

Dado que un programa Java/Kotlin generalmente se ejecuta a través de una máquina virtual de Java, cuando Android Studio recopila la pila de llamadas para un programa Java/Kotlin, la pila de llamadas generalmente incluye no solo el código Java/Kotlin, sino también el código nativo necesario para ejecutar el programa en sí y para que el programa se comunique con el sistema y el hardware.

  • Para saltar al código fuente asociado con un marco de pila, haz clic con el botón derecho en el marco y, luego, en Jump to source.
  • Para destacar el marco de pila asociado a un evento en la tabla de eventos, haz clic en el evento.

Para obtener información sobre los otros elementos visuales, consulta Cómo registrar un registro del sistema y el glosario de gráficos.

Ejemplo de código nativo con la línea de comandos

De forma interna, Android Studio usa simpleperf para rastrear el código nativo de tu app. Si deseas especificar opciones adicionales para Simpleperf, como muestrear CPU de dispositivos específicos o especificar duraciones de muestreo con una alta precisión, puedes usar simpleperf desde la línea de comandos.