Android: Logcat salta alcuni log?

Sep 30 2020

Sto usando Logcat per eseguire il debug della mia app che utilizza OpenGL. Il mio ciclo OpenGL onDraw viene inserito da 30 a 60 volte al secondo. Ho inserito "molti" Log.d (circa 30) in questo ciclo per eseguire il debug della mia app (ovvero per vedere quale parte del codice richiede troppo tempo).

Il mio problema è che vedo che non ho tutto il mio Log.d nel LogCat. Vengono ignorati in modo casuale su ogni fotogramma.

Questo problema sembra già noto, ad esempio qui .

C'è qualche soluzione per evitare questo problema? Qualche altro strumento di registro? Qualche impostazione da modificare in Android Studio? Qualche soluzione alternativa?

Grazie !

Risposte

1 WarrenFaith Sep 30 2020 at 20:47

È disponibile un framework di registrazione leggero che è possibile utilizzare che è anche in grado di accedere a un file.

Suggerirei di accedere a un file o di ridurre la registrazione. Hai detto di accedere circa 30 volte per un singolo frame. Farlo fino a 60 volte in un secondo significa 1800 registrazioni al secondo. Quindi circa ogni mezzo millisecondo registri qualcosa.

A parte il fatto che sovraccarichi il buffer logcat in questo modo in pochi secondi, non ti aiuterà davvero.

Suggerirei di definire un punto di inizio e di fine per la misurazione del tempo e di modificarlo per trovare la parte che richiede troppo tempo. Inoltre registra solo il tempo misurato, non fare affidamento sul timestamp del log nel logcat. Quindi non registrare i timestamp "start" e "stop", solo la durata reale.

Presumo anche che tu stia chiamando alcune funzioni o facendo alcuni cicli nel tuo onDraw (). Questi sono un buon punto per iniziare misurazioni separate. Considera anche che la registrazione stessa potrebbe avere un effetto sulle prestazioni, quindi lanciare troppe registrazioni in onDraw () probabilmente restituirà risultati errati.

modificare

C'è anche questa risposta che potrebbe aiutare anche te: https://stackoverflow.com/a/35553778/180538

modifica 2

Il tuo "link" sulla questione ha 11 anni. È molto probabile che questo "problema" sia già stato risolto. Ricordo che una volta ho scritto un logger di file e non ho mai riscontrato questo problema e ho semplicemente registrato 10000 righe in una riga per ciclo ...

VáclavHodek Sep 30 2020 at 20:35

In Android Studio, puoi filtrare l'output di logcat. Basta fare clic con il pulsante destro del mouse sulla riga nel logcat e selezionare "Filtro simile". Quindi perfeziona la regola di filtraggio.

Scusa, sono al telefono, quindi non sono sicuro del nome esatto, ma è sicuramente lì. Lo uso spesso.

Regis_AG Sep 30 2020 at 22:07

Ho risolto il mio problema. In realtà, il problema era dovuto al fatto che avevo molti altri log generati in altre parti della mia app. Non li ho visti perché avevo un filtro in LogCat. La rimozione del filtro mi ha permesso di vedere tutti i miei log, ho visto che avevo molti log provenienti da altri thread; Ho commentato questi altri log. Ha risolto il mio problema :) Grazie per il tuo aiuto!