Exemplo da pilha de chamadas

As pilhas de chamadas são úteis para identificar pontos críticos da CPU ou seções de código que demoram muito para serem executadas. As pilhas de chamadas ajudam você a entender qual parte do código foi executada e por que ela foi invocada.

Visão geral da amostra de callstack

Para fazer uma amostragem da callstack, selecione a tarefa Find CPU Hotspots (Callstack Sample) na guia Home do Android Studio Profiler. Depois que a gravação é analisada, você vê os seguintes recursos visuais:

Para complementar as linhas do tempo de uso da CPU e interações, a seção Linhas de execução mostra frames para cada chamada feita pelo app e pelo sistema. Confira algumas dicas para navegar pela amostra de callstack:

  • Expanda a linha de execução de interesse e use atalhos de teclado para navegar pelos frames de pilha. Clique em um frame de pilha para ver detalhes sobre o evento e as chamadas relacionadas no painel Análise.
  • Para filtrar determinados tipos de frames de pilha, clique em Reduzir frames e marque os tipos que você quer ocultar. Ao recolher frames, eles são removidos das seções Threads e Analysis. Dependendo da sua investigação, talvez seja interessante recolher frames da máquina virtual Java (por exemplo, android::AndroidRuntime::start e art::{...}) e do kernel do sistema (por exemplo, [kernel.kallsyms]+{offset}). Normalmente, isso corresponde a recolher frames relacionados a [kernel.kallsyms], /apex/ e /system/*.

Como um programa Java/Kotlin normalmente é executado em uma máquina virtual Java, quando o Android Studio coleta a pilha de chamadas de um programa Java/Kotlin, ela inclui não apenas o código Java/Kotlin, mas também o código nativo necessário para executar o programa e para que ele se comunique com o sistema e o hardware.

  • Para acessar o código-fonte associado a um frame de pilha, clique com o botão direito do mouse no frame e clique em Acessar origem.
  • Para destacar o frame de pilha associado a um evento na tabela de eventos, clique nele.

Para informações sobre os outros recursos visuais, consulte Gravar um rastreamento do sistema e o glossário de gráficos.

Exemplo de código nativo usando a linha de comando

Internamente, o Android Studio usa o simpleperf para rastrear o código nativo do seu app. Caso queira especificar mais opções para o Simpleperf, como amostragem de CPUs específicas do dispositivo ou especificação de durações de amostragem com alta precisão, use o Simpleperf na linha de comando.