O Traceview foi descontinuado. Se você estiver usando o Android
Studio 3.2 ou versões mais recentes, use o
CPU Profiler para inspecionar
arquivos .trace
capturados com a
instrumentação do app
com a classe Debug
,
registrar novos rastreamentos de métodos, salvar arquivos .trace
e inspecionar
o uso da CPU em tempo real pelos processos do app.
O Traceview é uma ferramenta que apresenta representações gráficas dos
registros de rastreamento. Você pode gerar os registros instrumentando seu código com a
classe Debug
. Esse método de rastreamento é
muito preciso, porque com ele é possível especificar a parte exata do código em que você quer iniciar
e interromper o registro de dados de rastreamento. Se você ainda não gerou registros de rastreamento e
os transferiu do seu dispositivo conectado para a máquina local, acesse Gerar
registros de rastreamento com a instrumentação do app.
Avaliar esses registros usando o Traceview ajuda você a depurar o app e
a criar um perfil de desempenho.
Dica: você pode usar
dmtracedump
na linha de comando para gerar diagramas
gráficos de pilha de chamadas dos seus arquivos de registro de rastreamento.
Caso não precise ver os registros de rastreamento gravados pela instrumentação
do app com a classe
Debug
, use o CPU Profiler
do Android Studio 3.0 e versões mais recentes para inspecionar as linhas de execução do app e registrar
os rastreamentos de métodos.
Abrir um registro de rastreamento usando o Traceview
Para abrir um registro de rastreamento com o Traceview do Android Studio, faça o seguinte:
- Inicie o Android Device Monitor.
- No Android Device Monitor, selecione File > Open File.
- Vá até o arquivo
.trace
que você quer inspecionar. - Clique em Open.
Observação: se você estiver tentando conferir os registros de rastreamento
de um app criado com a redução de código ativada (como um build de lançamento),
alguns métodos e nomes de membros podem ser ofuscados. Você pode usar o arquivo
mapping.txt
do ProGuard para descobrir os nomes originais não ofuscados.
Para mais informações sobre esse arquivo, consulte
Decodificar e ofuscar
o stack trace.
Observação: a execução do traceview
usando a
linha de comando foi descontinuada.
Visão geral do Traceview
Depois de abrir um registro de rastreamento, o Traceview mostra dados de registro usando os dois painéis abaixo:
- Um painel de linha do tempo que descreve quando cada linha de execução entra e sai de um método
- Um painel de perfil que resume a execução de cada linha de execução no período de registro do rastreamento
As seções a seguir fornecem mais informações sobre os painéis de saída do Traceview.
Painel da linha do tempo
A Figura 1 mostra o painel da linha do tempo de perto. A execução de cada linha de execução é exibida na própria fileira, com o tempo decorrido aumentando para a direita. Cada método é exibido em cores variadas. Os traços finos abaixo da primeira fileira mostram os filhos (da entrada à saída) do método selecionado.
Figura 1. Painel da linha do tempo do Traceview.
Painel de perfil
Como mostrado na Figura 2, o painel de perfil oferece uma lista de cada método executado pelo sistema durante o período de registro do rastreamento e o tempo gasto na execução desses métodos. Um método que chama outro é denominado pai, e os métodos chamados pelo pai são denominados filhos. Ao clicar em um método para o selecionar, os pais e filhos dele são mostrados em dois nós separados.
Para cada método (nó de nível superior), a tabela apresenta os tempos inclusivos e exclusivos (em milissegundos), assim como a porcentagem do tempo total. Enquanto o tempo exclusivo é o tempo gasto na execução do código do método, o tempo inclusivo é o tempo gasto na execução do código do método mais o tempo gasto na execução dos filhos dele. As informações sobre o tempo também são relatadas em termos de Tempo de CPU e Tempo real. O Tempo de CPU considera apenas o tempo em que a linha de execução está ativamente usando o Tempo de CPU. Por outro lado, o Tempo real fornece informações completas de tempo, desde o momento em que o app entra em um método até a saída dele, independente da linha de execução estar ativa ou suspensa.
Para cada nó de nível superior no painel de perfil, a coluna Calls + Rec, Calls/Total na tabela (não apresentada na Figura 2) informa o número de chamadas para o método e o número de chamadas recorrentes. Ou, para os métodos pai e filho, essa coluna mostra o número de chamadas em que o método era filho ou pai do método no nó de nível superior.
Figura 2. Painel de perfil do Traceview.
Problemas conhecidos do Traceview
O registro do Traceview não lida bem com linhas de execução, o que resulta nos problemas a seguir:
- Se uma linha de execução sai durante a criação de perfil, o nome da linha não é emitido (corrigido no Android 5.1 e versões mais recentes).
- A VM reutiliza os IDs de linha de execução. Se uma linha parar e outra for iniciada, elas podem receber o mesmo ID.