Inspecionar registros de rastreamento com o Traceview

O Traceview está obsoleto. Se você estiver usando o Android Studio 3.2 ou versões posteriores, 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 oferece 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 é 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 esses registros de rastreamento e os transferiu do seu dispositivo conectado para sua máquina local, vá para Gerar registros de rastreamento com a instrumentação do aplicativo. 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.

Se você não precisar ver os registros de rastreamento registrados pela instrumentação do app com a classe Debug, use o CPU Profiler do Android Studio 3.0 e versões posteriores 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:

  1. Inicie o Android Device Monitor.
  2. No Android Device Monitor, selecione File > Open File.
  3. Vá até o arquivo .trace que você quer inspecionar.
  4. Clique em Open.

Observação: se você estiver tentando ver os registros de rastreamento de um aplicativo criado com o ProGuard ativado (modo 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 ver mais informações sobre esse arquivo, consulte a documentação do Proguard.

Observação: a execução do traceview a partir da linha de comando foi suspensa.

Visão geral do Traceview

Depois de abrir um registro de rastreamento, o Traceview exibe dados de rastreamento usando os dois painéis a seguir:

  • 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.

Painel da linha do tempo do Traceview

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 método é denominado pai, e os métodos chamados pelo pai são denominados filhos. Ao clicar em um método e selecioná-lo, os pais e filhos dele são exibidos 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. O tempo exclusivo é o tempo gasto na execução do código do método, ao passo que 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 somente 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 seu app entra em um método até quando 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.

Painel de perfil do Traceview

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 posteriores).
  • A VM reutiliza os IDs de linha de execução. Se uma linha parar e outra for iniciada, elas poderão receber o mesmo ID.