O WinScope fornece a infraestrutura e as ferramentas para registrar e analisar os estados do WindowManager e do SurfaceFlinger durante e após as transições de janela. O WinScope registra todos os estados de serviço do sistema pertinentes em um arquivo de rastreamento, que você pode usar para reproduzir e percorrer as transições.
Capturando rastros
Capture rastreamentos por meio de configurações rápidas ou adb
em dispositivos que executam userdebug ou builds de engenharia.
Configurações rápidas
Para capturar rastreamentos de Configurações rápidas :
- Ative as opções do desenvolvedor .
- Vá para Opções do desenvolvedor > Blocos do desenvolvedor de configurações rápidas .
- Ative o rastreamento do WinScope .
- Abra Configurações rápidas .
- Toque em Winscope Trace para habilitar o rastreamento.
- Execute transições de janela no dispositivo.
- Depois de terminar, abra as Configurações rápidas e toque em Winscope Trace para desativar o rastreamento.
Os rastreamentos são gravados em /data/misc/wmtrace/wm_trace.winscope
e /data/misc/wmtrace/layers_trace.winscope
. Os rastreamentos também são incluídos nos relatórios de bugs.
adb
Ao capturar traços por meio de adb
, capture os traços do WindowManager e do SurfaceFlinger separadamente.
Traços do WindowManager
Para capturar rastreamentos do WindowManager:
- Ativar rastreamento:
adb shell cmd window tracing start
- Desabilitar rastreamento:
adb shell cmd window tracing stop
- Pegue o arquivo de rastreamento:
adb pull /data/misc/wmtrace/wm_trace.winscope wm_trace.winscope
Opcionalmente, você pode alterar a configuração de log padrão de várias configurações para rastreamentos do WindowManager:
- Defina a frequência de log (para a transação ou quadro):
adb shell cmd window tracing [frame | transaction]
- Configure o nível detalhado para entradas de log:
adb shell cmd window tracing level [all | trim | critical]
- Defina o tamanho máximo do buffer (em KB):
adb shell cmd window tracing size size-value
- Despeje o status do buffer, nível de log, capacidade restante e número de elementos:
adb shell cmd window tracing status
Traços do SurfaceFlinger
Para capturar traços do SurfaceFlinger:
- Ativar rastreamento:
adb shell su root service call SurfaceFlinger 1025 i32 1
- Desabilitar rastreamento:
adb shell su root service call SurfaceFlinger 1025 i32 0
- Pegue o arquivo de rastreamento:
adb pull /data/misc/wmtrace/layers_trace.winscope layers_trace.winscope
Opcionalmente, você pode alterar a configuração de log padrão de várias configurações para rastreamentos do SurfaceFlinger:
- Defina o tamanho máximo do buffer (em KB):
adb shell su root service call SurfaceFlinger 1029 i32 size-value
- Configure o nível detalhado para entradas de log:
adb shell su root service call SurfaceFlinger 1033 i32 flags
Transações
Para capturar transações:
- Ativar rastreamento:
adb shell su root service call SurfaceFlinger 1020 i32 1
- Desabilitar rastreamento:
adb shell su root service call SurfaceFlinger 1020 i32 0
- Pegue o arquivo de rastreamento:
adb pull /data/misc/wmtrace/transaction_trace.winscope
Mais arquivos de mesclagem de transações estão disponíveis em `/data/misc/wmtrace/` com o nome `transaction_merges_*.winscope`.
Gerando dumps de estado
O WinScope lê um instantâneo dos estados WindowManager e SurfaceFlinger dos relatórios de bugs. Os relatórios de bug armazenam os estados como arquivos proto separados dentro da pasta proto
. Para gerar os dumps de estado usando adb
, execute os comandos a seguir.
Gerenciador de Janelas
adb exec-out dumpsys window --proto > window_dump.winscope
SurfaceFlinger
adb exec-out dumpsys SurfaceFlinger --proto > sf_dump.winscope
Analisando traços
Para analisar um arquivo de rastreamento, use o aplicativo Web WinScope. Compile o aplicativo a partir da fonte ou abra-o no diretório pré-compilado.
- Baixe artefatos pré-construídos do repositório de origem do Android:
curl 'https://android.googlesource.com/platform/prebuilts/misc/+/master/common/winscope/winscope.html?format=TEXT' | base64 -d > winscope.html
- Abra os artefatos baixados em um navegador da web.
- Depois que o WinScope for aberto, selecione OPEN FILE para carregar um arquivo de rastreamento.
Usando o WinScope
Depois de abrir um arquivo de rastreamento no WinScope, você pode analisar o rastreamento de várias maneiras.

- Linha do tempo — Mostra a sequência de eventos no rastreamento. Use as teclas de seta ou clique em cada entrada para navegar pela linha do tempo.
- Tela — Fornece uma representação visual de cada janela visível na tela. Clique em uma janela para selecionar a janela de origem na hierarquia.
- Gravação de tela — Mostra a tela do dispositivo sincronizada com o rastreamento. Navega junto com a linha do tempo.
- Hierarquia — Representa cada janela conhecida pelo sistema. Algumas janelas não contêm buffers, mas existem para definir políticas nos filhos da janela. As janelas visíveis são marcadas com o ícone
V
- Propriedades — Mostra informações de estado para a entrada selecionada na hierarquia.