O Traceview é uma ferramenta que apresenta representações gráficas de registros de rastreamento. É possível
gerar os registros instrumentando o código com a classe Debug.
Esse método de rastreamento é muito preciso, porque você pode especificar exatamente onde no
código quer iniciar e interromper o registro de dados de rastreamento. Se você ainda não
gerou esses registros de rastreamento e os salvou do dispositivo conectado para a
máquina local, acesse Gerar registros de rastreamento com a instrumentação do app.
Inspecionar esses registros usando o Traceview ajuda a depurar o app e analisar o
desempenho dele.
Se você não precisar ver os registros de rastreamento que gravou ao instrumentar
seu app com a classe Debug, use o CPU Profiler incluído
no Android Studio 3.0 e versões mais recentes para inspecionar as linhas de execução do app e gravar rastreamentos
de método.
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
.traceque você quer inspecionar. - Clique em Abrir.
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 durante o período do registro de rastreamento.
As seções abaixo 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 fornece uma lista de todos os métodos que o sistema executou durante o período do registro de rastreamento e o tempo gasto na execução desses métodos. Um método que chama outro é chamado de pai, e os métodos que um pai chama são chamados de 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 informa as seguintes informações de tempo (em milissegundos), bem como a porcentagem do tempo total:
- Tempos inclusivo e exclusivo: o tempo exclusivo é o tempo gasto na execução do código do método, enquanto o tempo inclusivo é o tempo gasto na execução do código do método mais o tempo gasto na execução dos filhos.
- CPU e tempo real: o tempo de CPU considera apenas o tempo em que a linha de execução está usando ativamente o tempo de CPU, e o tempo real fornece informações de tempo absolutas desde o momento em que o app entra em um método até o momento em que ele sai desse método, independentemente de a 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 for encerrada durante a criação de perfil, o nome dela não será emitido (corrigido no Android 5.1 e versões mais recentes).
- A VM reutiliza os IDs de linha de execução. Se uma linha de execução for interrompida e outra for iniciada, elas poderão receber o mesmo ID.