Freigeben über


Android-Debugprotokoll

Ein sehr gängiger Trick, den Entwickler verwenden, um ihre Anwendungen zu debuggen, ist das Aufrufen von Console.WriteLine. Auf einer mobilen Plattform wie Android steht jedoch keine Konsole zur Verfügung. Android-Geräte stellen ein Protokoll bereit, das Sie beim Schreiben von Apps verwenden können. Dies wird aufgrund des Befehls, den Sie eingeben, um es abzurufen, manchmal als Logcat bezeichnet. Verwenden Sie das Debugprotokolltool zum Anzeigen der protokollierten Daten.

Übersicht: Android-Debugprotokoll

Das Debugprotokolltool bietet die Möglichkeit, während des Debuggens einer App durch Visual Studio Protokollausgaben anzuzeigen. Das Debugprotokoll unterstützt die folgenden Geräte:

  • Physische Android-Smartphones, -Tablets und -Wearables
  • ein virtuelles Android-Gerät, das auf dem Android-Emulator ausgeführt wird

Hinweis

Das Debugprotokolltool funktioniert nicht mit dem Xamarin Live Player.

Das Debugprotokoll zeigt keine Protokollmeldungen an, die generiert werden, während die App eigenständig auf dem Gerät ausgeführt wird (z.B. während es von Visual Studio getrennt ist).

Zugreifen auf das Debugprotokoll von Visual Studio

Klicken Sie auf das Geräteprotokollsymbol (Logcat), um das Debugprotokolltool zu öffnen:

Speicherort des Geräteprotokolltools auf der Symbolleiste

Alternativ können Sie das Geräteprotokolltool über eine der folgenden Menüoptionen starten:

  • Anzeigen > des anderen Windows-Geräteprotokolls >
  • Tools > Android-Geräteprotokoll >

Der folgende Screenshot veranschaulicht die verschiedenen Teile des Debugtoolfensters:

Teile des Fensters

  • Geräteauswahl : Wählt aus, welches physische Gerät oder welcher Emulator ausgeführt werden soll.

  • Protokolleinträge : Eine Tabelle mit Protokollmeldungen aus logcat.

  • Löschen von Protokolleinträgen : Löscht alle aktuellen Protokolleinträge aus der Tabelle.

  • Wiedergabe/Pause : Wechselt zwischen dem Aktualisieren oder Anhalten der Anzeige neuer Protokolleinträge.

  • Stop : Stoppt die Anzeige neuer Protokolleinträge.

  • Suchfeld : Geben Sie suchzeichenfolgen in dieses Feld ein, um nach einer Teilmenge der Protokolleinträge zu filtern.

Wenn das Debugprotokoll-Toolfenster angezeigt wird, verwenden Sie das Pulldownmenü des Geräts, um das Android-Gerät auszuwählen, das überwacht werden soll.

Speicherort der Geräteauswahl

Nachdem das Gerät ausgewählt wurde, fügt das Geräteprotokolltool automatisch Protokolleinträge aus einer ausgeführten App hinzu. Diese Protokolleinträge werden in der Tabelle der Protokolleinträge angezeigt. Wenn Sie zwischen Geräten wechseln, wird die Geräteprotokollierung abgebrochen und erneut gestartet. Beachten Sie, dass ein Android-Projekt geladen werden muss, bevor Geräte in der Geräteauswahl angezeigt werden. Wenn das Gerät nicht in der Geräteauswahl angezeigt wird, sollten Sie überprüfen, ob es im Geräte-Dropdownmenü von Visual Studio neben der Schaltfläche Start verfügbar ist.

Zugreifen über die Befehlszeile

Eine weitere Möglichkeit für den Zugriff auf das Debugprotokoll stellt der Zugriff über die Befehlszeile dar. Öffnen Sie ein Eingabeaufforderungsfenster, und navigieren Sie zum Ordner android SDK platform-tools (in der Regel befindet sich der Ordner SDK platform-tools unter C:\Programme (x86)\Android\android-sdk\platform-tools).

Wenn nur ein Gerät (physisches Gerät oder Emulator) angefügt ist, kann der Bericht angezeigt werden, indem folgender Befehl eingegeben wird:

$ adb logcat

Wenn mehrere Geräte angefügt sind, muss das Gerät explizit identifiziert werden. Beispiel: adb -d logcat zeigt das Protokoll des einzigen angefügten physischen Geräts an, während adb -e logcat das Protokoll des einzigen ausgeführten Emulators anzeigt.

Weitere Befehle können gefunden werden, indem adb eingegeben wird oder die Hilfemeldungen durchgelesen werden.

Schreiben in das Debugprotokoll

Nachrichten können mit Methoden der Klasse Android.Util.Log in das Debugprotokoll geschrieben werden. Beispiel:

string tag = "myapp";

Log.Info (tag, "this is an info message");
Log.Warn (tag, "this is a warning message");
Log.Error (tag, "this is an error message");

Dadurch wird eine Ausgabe erzeugt, die der folgenden ähnelt:

I/myapp   (11103): this is an info message
W/myapp   (11103): this is a warning message
E/myapp   (11103): this is an error message

Es ist auch möglich, zum Schreiben in das Debugprotokoll zu verwendenConsole.WriteLine. Diese Meldungen werden in logcat mit einem etwas anderen Ausgabeformat angezeigt (dieses Verfahren ist besonders nützlich beim Debuggen von Xamarin.Forms-Apps unter Android):

System.Console.WriteLine ("DEBUG - Button Clicked!");

Dadurch wird eine Ausgabe erzeugt, die der Folgenden ähnelt:

Info (19543) / mono-stdout: DEBUG - Button Clicked!

Interessante Nachrichten

Beim Lesen des Protokolls (und besonders bei der Bereitstellung von Protokollausschnitten für andere) ist eine sorgfältige Prüfung der gesamten Protokolldatei oft zu aufwendig. Um das Navigieren durch die Protokollnachrichten zu vereinfachen, suchen Sie anfangs nach einem Protokolleintrag, der dem folgenden ähnelt:

I/ActivityManager(12944): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=GcTest.GcTest/gctest.Activity1 } from pid 24175

Suchen Sie insbesondere nach einer Zeile, die mit dem regulären Ausdruck übereinstimmt und außerdem den Namen des Anwendungspakets enthält:

^I.*ActivityManager.*Starting: Intent

Diese Zeile entspricht dem Start einer Aktivität, und der Großteil (aber nicht alle) der folgenden Nachrichten sollte sich auf die Anwendung beziehen.

Beachten Sie, dass die einzelnen Nachrichten die Prozesskennung (PID) des Prozesses enthalten, der die Nachrichten generiert. In der obigen ActivityManager-Nachricht hat Prozess 12944 die Nachricht generiert. Suchen Sie nach der mono.MonoRuntimeProvider-Meldung, um zu bestimmen, welcher Prozess der gedebuggte Prozess der Anwendung ist:

I/ActivityThread(  602): Pub TouchTest.TouchTest.__mono_init__: mono.MonoRuntimeProvider

Diese Meldung stammt aus dem Prozess, der gestartet wurde. Alle nachfolgenden Meldungen, die diese PID enthalten, stammen aus dem gleichen Prozess.