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
eart::{...}
) 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.