Traces aufzeichnen

Um mit der Aufzeichnung eines Trace zu beginnen, wählen Sie eine Aufzeichnungskonfiguration aus einem der Drop-down-Menüs über oder unter dem CPU-Profiler aus und klicken Sie auf Aufzeichnen.

Abbildung 1: Der CPU-Profiler zeigt den Status, die Dauer und die Art der Aufzeichnung an.

Interagieren Sie mit der App und klicken Sie abschließend auf Beenden. Der Profiler zeigt seine Tracing-Informationen automatisch im Trace-Bereich an, wie in Abbildung 2 dargestellt.

Abbildung 2: CPU-Profiler nach der Aufzeichnung eines Methoden-Trace

  1. Ausgewählter Bereich: Legt den Teil der aufgezeichneten Zeit für die Prüfung im Trace-Bereich fest. Wenn Sie zum ersten Mal einen Trace aufzeichnen, wählt der CPU-Profiler automatisch die gesamte Länge Ihrer Aufzeichnung auf der CPU-Zeitachse aus. Wenn Sie die Trace-Daten nur für einen Teil des aufgezeichneten Zeitraums prüfen möchten, ziehen Sie die Ränder des markierten Bereichs.
  2. Bereich „Interaktion“:Zeigt Nutzerinteraktionen und App-Lebenszyklus-Ereignisse entlang einer Zeitachse an.
  3. Abschnitt "Threads":Zeigt die Aktivität des Threadstatus (z. B. Laufen, Ruhezustand usw.) und das Aufrufdiagramm (oder das Trace-Ereignisdiagramm in System Trace) für jeden Thread auf einer Zeitachse an.
    • Mit Maus- und Tastenkombinationen kannst du dich auf der Zeitachse bewegen.
    • Doppelklicken Sie auf den Thread-Namen oder drücken Sie die Eingabetaste, während ein Thread ausgewählt ist, um einen Thread zu maximieren oder zu minimieren.
    • Wählen Sie einen Thread aus, um zusätzliche Informationen im Bereich „Analyse“ aufzurufen. Halten Sie die Umschalttaste oder die Strg-Taste (Mac) gedrückt, um mehrere Threads auszuwählen.
    • Wählen Sie einen Methodenaufruf oder ein Trace-Ereignis in der Systemverfolgung aus, um weitere Informationen im Analysebereich anzuzeigen.
  4. Analysebereich: Zeigt Trace-Daten für den Zeitraum und den ausgewählten Thread- oder Methodenaufruf an. In diesem Bereich können Sie auswählen, wie die einzelnen Stacktraces angezeigt werden sollen (mithilfe der Analyse-Tabs) und wie die Ausführungszeit gemessen werden soll (über das Drop-down-Menü „Zeitreferenz“).
  5. Tabs im Analysebereich:Wählen Sie aus, wie Tracedetails angezeigt werden sollen. Weitere Informationen zu den einzelnen Optionen finden Sie unter Traces prüfen.
  6. Menü für Zeitreferenz:Wählen Sie eine der folgenden Optionen aus, um festzulegen, wie Zeitinformationen für jeden Aufruf gemessen werden sollen (wird nur unter Beispiel-/Trace-Java-Methoden unterstützt):
    • Walluhrzeit:Die Zeitinformationen geben die tatsächlich verstrichene Zeit an.
    • Thread-Zeit: Timing-Informationen stellen die tatsächlich verstrichene Zeit abzüglich eines Teils dieser Zeit dar, wenn der Thread keine CPU-Ressourcen verbraucht. Bei jedem Aufruf ist die Thread-Zeit immer kleiner oder gleich der tatsächlich verstrichenen Zeit. Die Verwendung der Thread-Zeit gibt Ihnen ein besseres Verständnis dafür, wie viel der tatsächlichen CPU-Nutzung eines Threads von einer bestimmten Methode oder Funktion verbraucht wird.
  7. Filter:Filtert Trace-Daten nach Funktion, Methode, Klasse oder Paketnamen. Wenn Sie beispielsweise Trace-Daten im Zusammenhang mit einem bestimmten Aufruf schnell identifizieren möchten, geben Sie den Namen in das Suchfeld ein. Auf dem Tab Flame-Diagramm werden Aufrufstacks hervorgehoben, die einen Aufruf, ein Paket oder eine Klasse enthalten, die mit der Suchanfrage übereinstimmen. Auf den Tabs Top-down und Bottom-up haben diese Aufrufstacks Vorrang vor anderen Trace-Ergebnissen. Außerdem können Sie die folgenden Optionen aktivieren, indem Sie das entsprechende Kästchen neben dem Suchfeld anklicken:
    • Regex:Verwenden Sie diese Option, um reguläre Ausdrücke in Ihre Suche einzubeziehen.
    • Groß-/Kleinschreibung beachten:Verwenden Sie diese Option, wenn bei der Suche zwischen Groß- und Kleinschreibung unterschieden wird.
Tipp:Beim Prüfen der Threads-Zeitachse sind die folgenden Tastenkombinationen verfügbar:
  • Heranzoomen: Drücken Sie W oder scrollen Sie mit dem Mausrad und halten Sie die Strg-Taste (Mac) gedrückt.
  • Herauszoomen: Drücken Sie S oder scrollen Sie mit dem Mausrad rückwärts und halten Sie dabei die Strg-Taste (Befehlstaste auf dem Mac) gedrückt.
  • Nach links schwenken:A drücken oder Maus nach rechts ziehen und dabei die Leertaste gedrückt halten.
  • Nach rechts schwenken:Drücken Sie „D“ oder ziehen Sie die Maus nach links und halten Sie die Leertaste gedrückt.
  • Thread maximieren oder minimieren:Doppelklicken Sie auf den Thread-Namen oder drücken Sie die Eingabetaste, während ein Thread ausgewählt ist.

Aufzeichnungskonfiguration auswählen

Bevor Sie mit dem Aufzeichnen von Trace-Informationen beginnen, wählen Sie die entsprechende Aufzeichnungskonfiguration für die zu erfassenden Profilinformationen aus:

  • Java-Beispielmethoden:Erfasst den Aufrufstack Ihrer Anwendung in regelmäßigen Intervallen während der Java-basierten Codeausführung Ihrer Anwendung. Der Profiler vergleicht die Datensätze erfasster Daten, um Zeit- und Ressourcennutzungsinformationen zur Java-basierten Codeausführung Ihrer Anwendung abzuleiten.

    Ein grundlegendes Problem von Sample-basiertem Tracing besteht darin, dass dieser Methodenaufruf nicht vom Profiler protokolliert wird, wenn Ihre Anwendung nach einer Erfassung des Aufrufstacks eine Methode eingibt und die Methode vor der nächsten Erfassung beendet. Wenn Sie an Tracing-Methoden mit so kurzen Lebenszyklen interessiert sind, sollten Sie instrumentiertes Tracing verwenden.

  • Trace-Java-Methoden:Instrumentiert Ihre Anwendung zur Laufzeit, um einen Zeitstempel am Anfang und Ende jedes Methodenaufrufs aufzuzeichnen. Zeitstempel werden erfasst und verglichen, um Methoden-Tracing-Daten zu generieren, einschließlich Zeitinformationen und CPU-Nutzung.

    Der mit der Instrumentierung der einzelnen Methoden verbundene Aufwand wirkt sich auf die Laufzeitleistung aus und kann sich auf die Profildaten auswirken. Dies ist bei Methoden mit relativ kurzer Lebensdauer besonders auffällig. Wenn Ihre Anwendung eine große Anzahl von Methoden in kurzer Zeit ausführt, überschreitet der Profiler außerdem möglicherweise schnell die maximal zulässige Dateigröße und kann möglicherweise keine weiteren Tracing-Daten aufzeichnen.

  • C-/C++-Beispielfunktionen:Erfasst Stichproben-Traces der nativen Threads Ihrer Anwendung. Wenn du diese Konfiguration verwenden möchtest, musst du deine App auf einem Gerät mit Android 8.0 (API-Level 26) oder höher bereitstellen.

    Intern verwendet diese Konfiguration simpleperf, um den nativen Code Ihrer App zu verfolgen. Wenn Sie zusätzliche Optionen für simpleperf angeben möchten, z. B. das Sampling bestimmter Geräte-CPUs oder die Stichprobendauer mit hoher Genauigkeit, können Sie simpleperf in der Befehlszeile verwenden.

  • Trace-Systemaufrufe:Hiermit werden detaillierte Details erfasst, mit denen Sie prüfen können, wie Ihre Anwendung mit Systemressourcen interagiert. Sie können das genaue Timing und die Dauer Ihrer Thread-Zustände prüfen, visualisieren, wo sich CPU-Engpässe auf allen Kernen befinden, und benutzerdefinierte Trace-Ereignisse zur Analyse hinzufügen. Diese Informationen können bei der Behebung von Leistungsproblemen entscheidend sein. Wenn du diese Konfiguration verwenden möchtest, musst du deine App auf einem Gerät mit Android 7.0 (API-Level 24) oder höher bereitstellen.

    Mit dieser Trace-Konfiguration können Sie wichtige Coderoutinen visuell auf der Profiler-Zeitachse markieren, indem Sie Ihren Code instrumentieren. Verwenden Sie die von trace.h bereitgestellte native Tracing API, um C-/C++-Code zu instrumentieren. Verwenden Sie die Klasse Trace, um den Java-Code zu instrumentieren. Weitere Informationen findest du unter App-Code instrumentieren.

    Diese Trace-Konfiguration basiert auf systrace. Sie können mit dem systrace-Befehlszeilendienstprogramm weitere Optionen angeben, die über die im CPU-Profiler verfügbaren Optionen hinausgehen. Mit den zusätzlichen Daten auf Systemebene, die von systrace bereitgestellt werden, können Sie native Systemprozesse prüfen und Probleme mit ausgelassenen oder verzögerten Frames beheben.

    Auf Geräten mit Android 9 (API-Level 28) oder höher können Sie eine System-App namens System Tracing verwenden, um System-Traces auf einem Gerät aufzuzeichnen.

Aufzeichnungskonfiguration erstellen, bearbeiten oder ansehen

Sie können Aufzeichnungskonfigurationen im Dialogfeld CPU-Aufzeichnungskonfigurationen erstellen, bearbeiten und ansehen. Dieses Dialogfeld können Sie öffnen, indem Sie oben im CPU-Profiler im Drop-down-Menü für die Aufzeichnungskonfigurationen die Option Konfigurationen bearbeiten auswählen.

Wenn Sie die Einstellungen einer vorhandenen Aufzeichnungskonfiguration ansehen möchten, wählen Sie sie im linken Bereich des Dialogfelds Konfigurationen für die CPU-Aufzeichnung aus.

So erstellen Sie eine neue Aufzeichnungskonfiguration:

  1. Klicken Sie links oben im Dialogfeld auf Hinzufügen . Dadurch wird eine neue Konfiguration mit einigen Standardeinstellungen erstellt.
  2. Benennen Sie die Konfiguration.
  3. Wählen Sie eine Trace-Technologie aus.
  4. Geben Sie für Stichprobenaufzeichnungskonfigurationen das Abtastintervall in Mikrosekunden (μs) an. Dieser Wert stellt die Zeit zwischen den einzelnen Stichproben des Aufrufstacks Ihrer Anwendung dar. Je kürzer das Intervall, das Sie angeben, desto schneller erreichen Sie die maximale Dateigröße für die aufgezeichneten Daten.
  5. Geben Sie die maximale Dateigröße in Megabyte (MB) für die aufgezeichneten Daten an, die auf das verbundene Gerät geschrieben werden. Wenn Sie die Aufzeichnung beenden, parst Android Studio diese Daten und zeigt sie im Profiler-Fenster an. Wenn Sie also das Limit erhöhen und eine große Datenmenge aufzeichnen, dauert das Parsen der Datei von Android Studio deutlich länger und Android Studio reagiert möglicherweise nicht mehr.

    Hinweis:Wenn Sie ein verbundenes Gerät mit Android 8.0 (API-Level 26) oder höher verwenden, gibt es für die Dateigröße der Trace-Daten keine Beschränkung und dieser Wert wird ignoriert. Allerdings müssen Sie trotzdem sorgfältig darauf achten, wie viele Daten das Gerät nach jeder Aufzeichnung erfasst, da Android Studio große Trace-Dateien möglicherweise nicht richtig parsen kann. Wenn Sie beispielsweise entweder einen Stichproben-Trace mit einem kurzen Stichprobenintervall oder einen instrumentierten Trace aufzeichnen, während Ihre Anwendung viele Methoden in kurzer Zeit aufruft, werden große Trace-Dateien schnell generiert.

  6. Klicken Sie auf Übernehmen, um die Änderungen anzunehmen und weitere Änderungen an den anderen Konfigurationen vorzunehmen. Klicken Sie auf OK, um alle übernommenen Änderungen zu akzeptieren und das Dialogfeld zu schließen.

CPU-Aktivität mit der Debug API aufzeichnen

Mit der Debug API können Sie Ihrer App die Möglichkeit geben, die Aufzeichnung von CPU-Aktivitäten im CPU-Profiler zu starten und zu beenden.

Der CPU-Profiler beginnt mit der Aufzeichnung, wenn Ihre Anwendung startMethodTracing(String tracePath) aufruft, und die Aufzeichnung beendet, wenn Ihre Anwendung stopMethodTracing() aufruft. Während der Aufzeichnung der CPU-Aktivität, die über diese API ausgelöst wird, zeigt der CPU-Profiler Debug API als aktive CPU-Aufzeichnungskonfiguration an.

Wenn Sie die Aufzeichnung von CPU-Aktivitäten mit der Debug API steuern möchten, stellen Sie die instrumentierte App auf einem Gerät mit Android 8.0 (API-Level 26) oder höher bereit. Die API-initiierte Aufzeichnung wird in profilfähigen Anwendungen unterstützt. Profiler von Android Studio benötigen jedoch eine debug-fähige App, um den Aufzeichnungsstatus in der UI anzuzeigen.

Wichtig:Die Debug API ist getrennt von anderen Möglichkeiten zum Starten und Beenden der Aufzeichnung von CPU-Aktivitäten zu verwenden, z. B. von den Schaltflächen in der grafischen Benutzeroberfläche von CPU Profiler und der Einstellung in der Aufzeichnungskonfiguration für die automatische Aufzeichnung beim Start der App.

Aufgrund des Limits von 8 MB für die Zwischenspeichergröße ist die Methode startMethodTracing(String tracePath) in der Debug API für kurze Intervalle oder Szenarien gedacht, bei denen sich die Aufzeichnung nur schwer manuell starten bzw. beenden lässt. Für längere Aufnahmen sollten Sie die Profiler-UI in Android Studio verwenden.

Weitere Informationen finden Sie unter Trace-Logs durch Instrumentierung Ihrer Anwendung generieren.

CPU-Aktivität beim Start der App aufzeichnen

So starten Sie die CPU-Aktivität beim Start der App automatisch:

  1. Wählen Sie Run > Edit Configurations (Ausführen > Konfigurationen bearbeiten) aus.
  2. Klicken Sie auf dem Tab Profilerstellung auf das Kästchen neben Methoden-Trace beim Start aufzeichnen.
  3. Wählen Sie eine Konfiguration für die CPU-Aufzeichnung aus dem Menü aus.
  4. Klicken Sie auf Übernehmen.
  5. Stellen Sie Ihre App auf einem Gerät mit Android 8.0 (API-Level 26) oder höher bereit. Wählen Sie dazu Run > Profile (Ausführen > Profil) aus.