Trace-Logs mit Traceview prüfen

Traceview wurde eingestellt. Wenn Sie Android Studio 3.2 oder höher verwenden, sollten Sie stattdessen CPU Profiler verwenden, um .trace-Dateien zu untersuchen, die bei der Instrumentierung Ihrer App mit der Klasse Debug erfasst wurden. Außerdem können Sie damit neue Methoden-Traces aufzeichnen, .trace-Dateien speichern und die CPU-Nutzung in Echtzeit Ihrer App-Prozesse prüfen.

Traceview ist ein Tool, das eine grafische Darstellung von Trace-Logs bereitstellt. Sie können die Logs generieren, indem Sie Ihren Code mit der Klasse Debug instrumentieren. Diese Tracing-Methode ist sehr präzise, da Sie genau angeben können, wo im Code Sie das Logging von Trace-Daten starten und beenden möchten. Wenn Sie diese Trace-Logs noch nicht generiert und von Ihrem verbundenen Gerät auf Ihrem lokalen Computer gespeichert haben, gehen Sie zu Trace-Logs durch Instrumentierung Ihrer Anwendung generieren. Die Überprüfung dieser Logs mit Traceview unterstützt Sie beim Debuggen der Anwendung und beim Profil für deren Leistung.

Tipp:Sie können dmtracedump in der Befehlszeile verwenden, um grafische Callback-Diagramme für Ihre Trace-Log-Dateien zu generieren.

Wenn Sie die Trace-Logs, die Sie durch Instrumentieren Ihrer App mit der Klasse Debug aufgezeichnet haben, nicht ansehen müssen, können Sie den CPU-Profiler in Android Studio 3.0 und höher verwenden, um die Threads Ihrer App zu prüfen und Methoden-Traces aufzuzeichnen.

Trace-Log mit Traceview öffnen

So öffnen Sie ein Trace-Log mit Traceview aus Android Studio:

  1. Starten Sie den Android-Gerätemonitor.
  2. Wählen Sie im Android-Gerätemonitor Datei > Datei öffnen aus.
  3. Rufen Sie die Datei .trace auf, die Sie prüfen möchten.
  4. Klicken Sie auf Öffnen.

Hinweis:Wenn Sie die Trace-Logs einer Anwendung aufrufen möchten, die mit aktivierter Codekomprimierung erstellt wurde (z. B. ein Release-Build), sind möglicherweise einige Methoden- und Mitgliedsnamen verschleiert. Sie können die ProGuard-Datei mapping.txt verwenden, um die ursprünglichen, nicht verschleierten Namen zu ermitteln. Weitere Informationen zu dieser Datei finden Sie unter Verschleierte Stacktraces decodieren.

Hinweis: Das Ausführen von traceview über die Befehlszeile wurde verworfen.

Traceview – Übersicht

Nachdem ein Trace-Log geöffnet wurde, zeigt Traceview Logdaten in den folgenden beiden Bereichen an:

  • Zeitachsenbereich, der beschreibt, wann jeder Thread eine Methode betritt und wieder verlässt
  • Einen Profilbereich, in dem die Ausführung jedes Threads über den Zeitraum des Trace-Logs zusammengefasst ist

Die folgenden Abschnitte enthalten zusätzliche Informationen zu den Traceview-Ausgabebereichen.

Zeitachsenbereich

Abbildung 1 zeigt eine Nahaufnahme des Zeitachsenbereichs. Die Ausführung jedes Threads wird in einer eigenen Zeile angezeigt, wobei die verstrichene Zeit nach rechts zunimmt. Jede Methode wird in unterschiedlichen Farben dargestellt. Die dünnen Linien unter der ersten Zeile zeigen die untergeordneten Elemente (vom Eintrag bis zum Exit) der ausgewählten Methode.

Traceview-Zeitachse

Abbildung 1: Der Zeitachsenbereich von Traceview.

Profilbereich

Wie in Abbildung 2 gezeigt, enthält der Profilbereich eine Liste aller Methoden, die das System im Zeitraum des Trace-Logs ausgeführt hat, sowie die Zeit, die für die Ausführung dieser Methoden aufgewendet wurde. Eine Methode, die eine andere Methode aufruft, wird als übergeordnete Methode bezeichnet. Methoden, die von einer übergeordneten Methode aufgerufen werden, werden als ihre untergeordneten Elemente bezeichnet. Wenn Sie eine Methode durch Klicken auswählen, werden sowohl ihre übergeordneten als auch ihre untergeordneten Methoden unter zwei separaten Knoten angezeigt.

Für jede Methode (Knoten der obersten Ebene) werden in der Tabelle sowohl die einschließenden als auch die exklusiven Zeiten (in Millisekunden) sowie der Prozentsatz der Gesamtzeit angezeigt. Die exklusive Zeit ist die Zeit, die für die Ausführung des eigenen Codes der Methode benötigt wird. Die inklusive Zeit ist die Zeit, die für die Ausführung des eigenen Codes der Methode benötigt wird, plus die Zeit, die für die Ausführung der untergeordneten Elemente aufgewendet wird. Die Zeitinformationen werden auch in Bezug auf CPU-Zeit und Echtzeit angegeben. Die CPU-Zeit berücksichtigt nur die Zeit, in der der Thread die CPU-Zeit aktiv nutzt. Echtzeit stellt absolute Zeitinformationen bereit vom Eintritt der Anwendung in eine Methode bis zum Beenden dieser Methode – unabhängig davon, ob der Thread aktiv ist oder sich im Ruhezustand befindet.

Für jeden Knoten der obersten Ebene im Profilbereich enthält die Spalte Calls + Rec, Calls/Total in der Tabelle (nicht in Abbildung 2 dargestellt) die Anzahl der Aufrufe an die Methode und die Anzahl der rekursiven Aufrufe. Für übergeordnete und untergeordnete Methoden zeigt diese Spalte die Anzahl der Aufrufe an, bei denen die Methode ein untergeordnetes oder übergeordnetes Element der Methode im übergeordneten Knoten war.

Traceview-Profilbereich.

Abbildung 2: Im Bereich des Traceview-Profils

Bekannte Probleme mit TraceView

Das Traceview-Logging verarbeitet Threads nicht gut, was zu folgenden Problemen führt:

  • Wenn ein Thread während der Profilerstellung beendet wird, wird der Thread-Name nicht ausgegeben (wird in Android 5.1 und höher behoben).
  • Die VM verwendet Thread-IDs wieder. Wenn ein Thread beendet und ein anderer gestartet wird, erhalten sie möglicherweise dieselbe ID.