Android: Logcat pulando alguns logs?

Sep 30 2020

Estou usando o Logcat para depurar meu aplicativo que usa OpenGL. Meu loop OpenGL onDraw é inserido 30 a 60 vezes por segundo. Coloquei 'muitos' Log.d (cerca de 30) neste loop para depurar meu aplicativo (ou seja, para ver qual parte do código consome muito tempo).

Meu problema é que vejo que não tenho todo o meu Log.d no LogCat. Eles são ignorados aleatoriamente em cada quadro.

Este problema parece já conhecido, por exemplo aqui .

Existe alguma solução para evitar este problema? Qualquer outra ferramenta de registro? Alguma configuração para alterar no Android Studio? Alguma solução alternativa?

Obrigado !

Respostas

1 WarrenFaith Sep 30 2020 at 20:47

Existe uma estrutura de log leve que você pode usar e que também é capaz de efetuar login em um arquivo.

Eu recomendaria fazer o login em um arquivo ou reduzir o seu registro. Você disse que loga cerca de 30 vezes para um único quadro. Fazer isso até 60 vezes por segundo significa 1.800 logs por segundo. Então, a cada meio milissegundo você registra algo.

Além do fato de que você estourou o buffer do logcat dessa forma em alguns segundos, isso não vai te ajudar muito.

Eu recomendaria definir um ponto inicial e um ponto final para sua medição de tempo e modificá-lo para encontrar a parte que consome muito tempo. Além disso, registre apenas o tempo medido, não confie no carimbo de data / hora do log no logcat. Portanto, não registre os carimbos de data / hora de "início" e "parada", apenas a duração real.

Também presumo que você esteja chamando algumas funções ou fazendo alguns loops em seu onDraw (). Este é um bom lugar para começar a medição separada. Considere também que o registro em si pode afetar o desempenho, portanto, colocar muito registro no onDraw () provavelmente retornará resultados errados.

editar

Também há esta resposta que também pode ajudá-lo: https://stackoverflow.com/a/35553778/180538

edit2

Seu "link" sobre o assunto tem 11 anos. É muito provável que esse "problema" já tenha sido corrigido. Lembro-me de que escrevi um logger de arquivos uma vez e nunca tive esse problema e registrei 10.000 linhas em um loop de uma linha ...

VáclavHodek Sep 30 2020 at 20:35

No Android Studio, você pode filtrar a saída do logcat. Basta clicar com o botão direito do mouse na linha do logcat e selecionar "Filtrar semelhante". Em seguida, ajuste sua regra de filtragem.

Desculpe, estou ao telefone, não tenho a certeza do nome exato, mas está definitivamente lá. Eu uso frequentemente.

Regis_AG Sep 30 2020 at 22:07

Resolveu meu problema. Na verdade, o problema era devido ao fato de que eu tinha muitos outros logs gerados em outras partes do meu aplicativo. Não os vi porque tinha um filtro no LogCat. Remover o filtro permitiu-me ver todos os meus logs, vi que tinha muitos logs vindos de outros threads; Eu comentei esses outros logs. Resolvido meu problema :) Obrigado por sua ajuda!