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,
können Sie besser steuern, wann
Das Gerät startet und beendet die Aufzeichnung von Tracing-Informationen. Das Gerät speichert auch
Trace-Logs mit den von Ihnen angegebenen Namen, sodass Sie jedes Log einfach identifizieren können
. Anschließend können Sie sich jedes Trace-Log 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 Trace-Logs generieren, sollten Sie prüfen, ob Ihre App Logik Speichern von Trace-Logs im app-spezifischen Verzeichnis.
App instrumentieren
Rufen Sie zum Erstellen von Trace-Logs startMethodTracing()
auf.
das System mit dem Logging
von Tracing-Daten beginnen soll.
Im Aufruf können Sie den Namen des
.trace
-Datei und das System speichert sie in einer paketspezifischen
das für persistente App-Daten auf dem Zielgerät vorgesehen ist:
im selben Verzeichnis, das von der
getExternalFilesDir()
und befindet sich auf den meisten Geräten im Verzeichnis ~/sdcard/
.
Diese Datei enthält die Trace-Daten der binären Methoden und eine Zuordnungstabelle mit Thread.
und Methodennamen. Um das Tracing zu beenden, rufen 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 die Methode
startMethodTracing()
Auch ohne den Namen des Trace-Logs zu ändern, wird das vorhandene Log überschrieben.
die auf dem Gerät gespeichert sind. Weitere Informationen zum dynamischen Ändern des Namens jedes Trace
finden Sie im Abschnitt Mehrere Logs speichern.
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 Traces gelten 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 Anwendung langsamer ausgeführt wird, wenn die Profilerstellung aktiviert ist. Das heißt, Sie
sollten die Profildaten nicht zur Bestimmung absoluter Timings verwenden (z. B. "Methode
foo()
benötigt 2,5 Sekunden zum Ausführen“). Die Zeitinformationen in den Trace-Logs
ist nur beim Vergleich mit früheren Trace-Logs nützlich. So können Sie sehen,
wird Ihre App schneller oder langsamer.
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 geringeren Auswirkungen auf die Laufzeitleistung zu erstellen. Bis
Beispielprofilerstellung aktivieren, aufrufen
startMethodTracingSampling()
(anstatt startMethodTracing()
mit einer bestimmten Stichprobenerhebung aufzurufen)
Intervall. Das System erfasst regelmäßig Stichproben, bis Ihre App aufruft.
stopMethodTracing()
Mehrere Logs speichern
Wenn Ihre Anwendung einen Methoden-Trace mehrmals startet und stoppt, ohne einen Wert für
Name für das Trace-Log gesetzt wurde, überschreibt das Gerät das ältere Trace-Log mit dem Parameter
neu, d. h., es wird nur das neueste Trace-Protokoll gespeichert. Um mehrere zu speichern
Trace-Logs auf Ihr Gerät übertragen, benennen Sie das Trace-Log jedes Mal dynamisch um, wenn Ihre App
ruft startMethodTracing()
auf.
Im folgenden Beispiel wird die Methode SimpleDateFormat
verwendet.
, um das aktuelle Datum und die aktuelle Uhrzeit bei der Benennung der Trace-Logs 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 Trace-Protokoll auf Ihrem Gerät erstellt hat, können Sie auf die Datei zugreifen auf eine der folgenden Arten:
Geräte-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.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 kopiert: 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 Ablaufverfolgungsdatei mit dem CPU-Profiler