Sie können Ihre App instrumentieren, um einen Methoden-Trace der Ausführung Ihrer App zu generieren
mit Debug
. Wenn Sie Ihre App so instrumentieren, haben Sie mehr Kontrolle darüber, wann genau das Gerät mit der Aufzeichnung von Informationen zur Fehlerbehebung beginnt und aufhört. Das Gerät speichert auch
Trace-Logs mit den von Ihnen angegebenen Namen, sodass Sie jedes Log einfach identifizieren können
. Sie können sich die einzelnen Trace-Logs dann in Android Studio ansehen.
CPU-Profiler
Sie können auch Tracing im CPU Profiler starten und beenden ohne den Code Ihrer App zu instrumentieren.
Bevor Sie mit dem Erstellen von Ablaufprotokollen beginnen, müssen Sie Ihrer App Logik hinzufügen, um Ablaufprotokolle im appspezifischen Verzeichnis zu speichern.
App instrumentieren
Wenn Sie Trace-Logs erstellen möchten, rufen Sie startMethodTracing()
an, wo das System mit dem Logging von Trace-Daten beginnen soll.
Sie können im Aufruf den Namen für die Datei .trace
angeben. Das System speichert sie dann in einem paketspezifischen Verzeichnis, das für nichtflüchtige App-Daten auf dem Zielgerät vorgesehen ist. Das ist dasselbe Verzeichnis, das von getExternalFilesDir()
zurückgegeben wird und sich auf den meisten Geräten im Verzeichnis ~/sdcard/
befindet.
Diese Datei enthält die Trace-Daten der binären Methoden und eine Zuordnungstabelle mit Thread.
und Methodennamen. Wenn Sie die Standortermittlung beenden möchten, drücken Sie stopMethodTracing()
.
Im folgenden Beispiel wird die Aufzeichnung eines Trace-Logs mit dem Namen gestartet und beendet.
sample.trace
:
Kotlin
// Starts recording a trace log with the name you provide. For example, the // following code tells the system to start recording a .trace file to the // device with the name "sample.trace". Debug.startMethodTracing("sample") // The system begins buffering the generated trace data, until your // application calls <code><a href="/reference/android/os/Debug.html#stopMethodTracing()">stopMethodTracing()</a></code>, at which time it writes // the buffered data to the output file. Debug.stopMethodTracing()
Java
// Starts recording a trace log with the name you provide. For example, the // following code tells the system to start recording a .trace file to the // device with the name "sample.trace". Debug.startMethodTracing("sample"); ... // The system begins buffering the generated trace data, until your // application calls <code><a href="/reference/android/os/Debug.html#stopMethodTracing()">stopMethodTracing()</a></code>, at which time it writes // the buffered data to the output file. Debug.stopMethodTracing();
Wenn Ihre App startMethodTracing()
noch einmal aufruft, ohne den Namen des Protokolls zu ändern, wird das vorhandene Protokoll überschrieben, das auf dem Gerät gespeichert ist. Informationen zum dynamischen Ändern des Namens jedes Protokolls finden Sie im Abschnitt zum Speichern mehrerer Protokolle.
Wenn das System vor dem Aufruf die maximale Puffergröße erreicht
stopMethodTracing()
,
stoppt das System das Tracing und sendet eine Benachrichtigung an die Konsole.
Die Methoden zum Starten und Beenden von Protokollen funktionieren für den gesamten App-Prozess. Das
könnten Sie beispielsweise
startMethodTracing()
in den
onCreate(Bundle)
und rufen Sie stopMethodTracing()
auf
in onDestroy()
dieser Aktivität
.
Beachten Sie, dass Ihre App langsamer ausgeführt wird, wenn das Profiling aktiviert ist. Sie sollten die Profiling-Daten also nicht verwenden, um absolute Zeitangaben zu ermitteln, z. B. „Die Ausführung der Methode foo()
dauert 2,5 Sekunden“. Die Zeitangaben in den Trace-Logs sind nur dann nützlich, wenn Sie sie mit früheren Trace-Logs vergleichen. So können Sie sehen, ob Ihre App durch die letzten Änderungen schneller oder langsamer geworden ist.
Bei der Bereitstellung auf Geräten mit Android 5.0 (API-Level 21) und höher haben Sie folgende Möglichkeiten:
Verwenden Sie die samplebasierte Profilerstellung, um Profile mit weniger Auswirkungen auf die Laufzeitleistung zu erstellen. Bis
Beispielprofilerstellung aktivieren, aufrufen
startMethodTracingSampling()
(anstatt startMethodTracing()
aufzurufen) mit einer angegebenen Stichprobenerhebung.
Intervall. Das System erfasst regelmäßig Samples, bis Ihre App stopMethodTracing()
aufruft.
Mehrere Logs speichern
Wenn Ihre App einen Methoden-Trace mehrmals startet und beendet, ohne einen neuen Namen für das Protokoll anzugeben, überschreibt das Gerät das ältere Protokoll mit dem neuen. Es wird also nur das neueste Protokoll aufbewahrt. Wenn Sie mehrere Protokolle auf Ihrem Gerät speichern möchten, benennen Sie das Protokoll jedes Mal dynamisch um, wenn Ihre App startMethodTracing()
aufruft.
Im folgenden Beispiel wird die Klasse SimpleDateFormat
verwendet, um bei der Benennung jedes Trace-Logs das aktuelle Datum und die aktuelle Uhrzeit anzugeben:
Kotlin
// Uses the <code><a href="/reference/java/text/SimpleDateFormat.html">SimpleDateFormat</a></code> class to create a String with // the current date and time. val dateFormat: DateFormat = SimpleDateFormat("dd_MM_yyyy_hh_mm_ss", Locale.getDefault()) val logDate: String = dateFormat.format(Date()) // Applies the date and time to the name of the trace log. Debug.startMethodTracing("sample-$logDate")
Java
// Uses the <code><a href="/reference/java/text/SimpleDateFormat.html">SimpleDateFormat</a></code> class to create a String with // the current date and time. SimpleDateFormat dateFormat = new SimpleDateFormat("dd_MM_yyyy_hh_mm_ss", Locale.getDefault()); String logDate = dateFormat.format(new Date()); // Applies the date and time to the name of the trace log. Debug.startMethodTracing( "sample-" + logDate);
Auf Trace-Logs auf dem Gerät zugreifen
Nachdem das System das Protokoll auf Ihrem Gerät erstellt hat, können Sie auf die Datei auf folgende Arten zugreifen:
Device Explorer verwenden Klicke zum Öffnen des Geräte-Explorers auf Ansicht > Tool-Fenster > Geräte-Explorer (oder klicken Sie auf das Geräte-Explorer
in der Symbolleiste des Toolfensters. Wie in Abbildung 1 dargestellt, findest du die
.trace
-Dateien auf der paketspezifischen Verzeichnisses an.Abbildung 1. Trace-Logs mit dem Geräte-Explorer ermitteln
Kopieren Sie die Datei mit dem Befehl
adb pull
auf Ihren lokalen Computer. Mit dem folgenden Befehl wird ein Trace-Log mit dem Namensample.trace
vom Gerät auf das Verzeichnis~/Documents/trace-logs/
Ihres lokalen Computers.adb pull path-on-device/sample.trace ~/Documents/trace-logs/
Sie können dann Importieren Sie die Trace-Datei mit dem CPU-Profiler.