Android: Logcat überspringt einige Protokolle?
Ich verwende Logcat, um meine App zu debuggen, die OpenGL verwendet. Meine OpenGL onDraw-Schleife wird 30 bis 60 Mal pro Sekunde eingegeben. Ich habe 'many' Log.d (ungefähr 30) in diese Schleife eingefügt, um meine App zu debuggen (nämlich um zu sehen, welcher Teil des Codes zu zeitaufwändig ist).
Mein Problem ist, dass ich sehe, dass ich nicht alle meine Log.d in der LogCat habe. Sie werden in jedem Frame zufällig ignoriert.
Dieses Problem scheint zum Beispiel hier bereits bekannt zu sein .
Gibt es eine Lösung, um dieses Problem zu vermeiden? Irgendein anderes Protokoll-Tool? Irgendwelche Einstellungen, die in Android Studio geändert werden müssen? Irgendeine Problemumgehung?
Vielen Dank !
Antworten
Es gibt ein leichtes Logger-Framework , das Sie verwenden können und das sich auch in eine Datei einloggen kann.
Ich würde empfehlen, sich entweder in eine Datei einzuloggen oder die Protokollierung zu reduzieren. Sie sagten, Sie melden sich ungefähr 30 Mal für einen einzelnen Frame an. Wenn Sie dies bis zu 60 Mal in einer Sekunde tun, bedeutet dies 1800 Protokolle pro Sekunde. Etwa jede halbe Millisekunde protokollieren Sie also etwas.
Abgesehen von der Tatsache, dass Sie den Logcat-Puffer in wenigen Sekunden auf diese Weise überlaufen, hilft es Ihnen nicht wirklich.
Ich würde empfehlen, einen Start- und einen Endpunkt für Ihre Zeitmessung zu definieren und zu ändern, um das zu zeitaufwändige Teil zu finden. Protokollieren Sie auch nur die gemessene Zeit, und verlassen Sie sich nicht auf den Zeitstempel des Protokolls im Logcat. Protokollieren Sie also nicht die Zeitstempel "Start" und "Stopp", sondern nur die tatsächliche Dauer.
Ich gehe auch davon aus, dass Sie einige Funktionen aufrufen oder einige Schleifen in Ihrem onDraw () ausführen. Dies ist ein guter Ort, um eine separate Messung zu starten. Beachten Sie auch, dass sich die Protokollierung selbst auf die Leistung auswirken kann. Wenn Sie also zu viel in onDraw () protokollieren, werden wahrscheinlich falsche Ergebnisse zurückgegeben.
bearbeiten
Es gibt auch diese Antwort, die Ihnen auch helfen könnte: https://stackoverflow.com/a/35553778/180538
edit2
Ihr "Link" zu diesem Thema ist 11 Jahre alt. Es ist sehr wahrscheinlich, dass dieses "Problem" bereits behoben ist. Ich erinnere mich, dass ich selbst einmal einen Dateilogger geschrieben habe und dieses Problem nie aufgetreten bin und einfach 10000 Zeilen in einer einzeiligen for-Schleife protokolliert habe ...
In Android Studio können Sie die Logcat-Ausgabe filtern. Klicken Sie einfach mit der rechten Maustaste auf die Zeile im Logcat und wählen Sie "Ähnlich filtern". Passen Sie dann Ihre Filterregel an.
Entschuldigung, ich bin am Telefon, daher bin ich mir nicht sicher, ob ich einen genauen Namen habe, aber er ist definitiv da. Ich benutze es oft.
Mein Problem gelöst. Eigentlich war das Problem auf die Tatsache zurückzuführen, dass ich viele andere Protokolle in anderen Teilen meiner App generiert hatte. Ich habe sie nicht gesehen, da ich einen Filter in LogCat hatte. Durch Entfernen des Filters konnte ich alle meine Protokolle anzeigen. Ich sah, dass viele Protokolle von anderen Threads stammten. Ich habe diese anderen Protokolle kommentiert. Mein Problem wurde gelöst :) Vielen Dank für Ihre Hilfe!