Protokol ladění Androidu

Jedním z velmi běžných triků, které vývojáři používají k ladění svých aplikací, je volání Console.WriteLine. Na mobilní platformě, jako je Android, ale neexistuje žádná konzola. Zařízení s Androidem poskytují protokol, který můžete použít při psaní aplikací. To se někdy označuje jako logcat kvůli příkazu, který zadáte, aby se načetl. K zobrazení protokolovaných dat použijte nástroj Protokol ladění.

Přehled protokolu ladění androidu

Nástroj Protokol ladění poskytuje způsob zobrazení výstupu protokolu při ladění aplikace prostřednictvím sady Visual Studio. Protokol ladění podporuje následující zařízení:

  • Fyzické telefony, tablety a nositelná zařízení s Androidem.
  • Virtuální zařízení s Androidem spuštěné v emulátoru Androidu.

Poznámka:

Nástroj Protokol ladění nefunguje s Xamarin Live Playerem.

Protokol ladění nezobrazuje zprávy protokolu, které se generují, když je aplikace spuštěná samostatně na zařízení (tj. když je odpojená od sady Visual Studio).

Přístup k protokolu ladění ze sady Visual Studio

Pokud chcete otevřít nástroj Protokol zařízení, klikněte na ikonu Log zařízení (logcat) na panelu nástrojů:

Location of Device Log tool on the toolbar

Případně spusťte nástroj Protokol zařízení z některého z následujících výběrů nabídky:

  • Zobrazení > jiného protokolu zařízení s Windows >
  • Nástroje v > protokolu zařízení s Androidem >

Následující snímek obrazovky znázorňuje různé části okna Nástroje ladění:

Parts of the Debug Tool window

  • Selektor zařízení – vybere fyzické zařízení nebo emulátor, který se má monitorovat.

  • Položky protokolu – tabulka zpráv protokolu z logcat.

  • Vymazat položky protokolu – Vymaže všechny aktuální položky protokolu z tabulky.

  • Přehrát/pozastavit – Přepíná mezi aktualizací nebo pozastavením zobrazení nových položek protokolu.

  • Stop – Zastaví zobrazení nových položek protokolu.

  • Vyhledávací pole – Zadejte do tohoto pole hledaný řetězec a vyfiltrujte podmnožinu položek protokolu.

Když se zobrazí okno nástroje Protokol ladění, pomocí rozevírací nabídky zařízení zvolte zařízení s Androidem, které chcete monitorovat:

Location of Device Selector

Po výběru zařízení nástroj Protokol zařízení automaticky přidá položky protokolu ze spuštěné aplikace – tyto položky protokolu se zobrazí v tabulce položek protokolu. Přepínání mezi zařízeními se zastaví a spustí protokolování zařízení. Mějte na paměti, že projekt Androidu musí být načten, aby se v selektoru zařízení zobrazila všechna zařízení. Pokud se zařízení nezobrazuje v selektoru zařízení, ověřte, že je dostupné v rozevírací nabídce zařízení sady Visual Studio vedle tlačítka Start .

Přístup z příkazového řádku

Další možností je zobrazit protokol ladění prostřednictvím příkazového řádku. Otevřete okno příkazového řádku a přejděte do složky Nástrojů platformy sady Android SDK (obvykle se složka sdk platform-tools nachází v umístění C:\Program Files (x86)\Android\android-sdk\platform-tools.

Pokud je připojené jenom jedno zařízení (fyzické zařízení nebo emulátor), můžete protokol zobrazit zadáním následujícího příkazu:

$ adb logcat

Pokud je připojeno více než jedno zařízení, musí být zařízení explicitně identifikováno. Například adb -d logcat zobrazí protokol jediného fyzického zařízení připojeného, zatímco adb -e logcat zobrazuje protokol jediného spuštěného emulátoru.

Další příkazy najdete tak, že zadáte adb a přečtete si zprávy nápovědy.

Zápis do protokolu ladění

Zprávy lze zapisovat do ladicího protokolu pomocí metod třídy Android.Util.Log . Příklad:

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");

Výsledkem je výstup podobný následujícímu:

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

Je také možné použít Console.WriteLine k zápisu do protokolu ladění – tyto zprávy se zobrazují v logcat s mírně odlišným výstupním formátem (tato technika je zvláště užitečná při ladění aplikací Xamarin.Forms v Androidu):

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

Výsledkem je výstup podobný následujícímu v logcat:

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

Zajímavé zprávy

Při čtení protokolu (a zejména při poskytování fragmentů protokolu jiným uživatelům) je často příliš těžkopádný soubor protokolu. Pokud chcete usnadnit procházení zpráv protokolu, začněte hledáním položky protokolu, která se podobá následující:

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

Konkrétně vyhledejte řádek odpovídající regulárnímu výrazu, který obsahuje také název balíčku aplikace:

^I.*ActivityManager.*Starting: Intent

Toto je řádek, který odpovídá začátku aktivity, a většina (ale ne všechny) následujících zpráv by měla souviset s aplikací.

Všimněte si, že každá zpráva obsahuje identifikátor procesu (pid) procesu, který zprávu generuje. Ve výše uvedené ActivityManager zprávě proces 12944 vygeneroval zprávu. Pokud chcete zjistit, který proces je procesem laděné aplikace, vyhledejte mono. Zpráva MonoRuntimeProvider :

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

Tato zpráva pochází z procesu, který byl spuštěn. Všechny následující zprávy, které obsahují tento pid, pocházejí ze stejného procesu.