Udostępnij za pośrednictwem


Dziennik debugowania systemu Android

Jedną z bardzo typowych metod, których deweloperzy używają do debugowania swoich aplikacji, jest wykonywanie wywołań do Console.WriteLineusługi . Jednak na platformie mobilnej, takiej jak Android, nie ma konsoli. Urządzenia z systemem Android udostępnia dziennik, którego można używać podczas pisania aplikacji. Jest to czasami określane jako logcat ze względu na polecenie, które wpiszesz, aby go pobrać. Użyj narzędzia Dziennik debugowania, aby wyświetlić zarejestrowane dane.

Omówienie dziennika debugowania systemu Android

Narzędzie debugowania dziennika umożliwia wyświetlanie danych wyjściowych dziennika podczas debugowania aplikacji za pomocą programu Visual Studio. Dziennik debugowania obsługuje następujące urządzenia:

  • Fizyczne telefony z systemem Android, tablety i urządzenia do noszenia.
  • Urządzenie wirtualne z systemem Android uruchomione w emulatorze systemu Android.

Uwaga

Narzędzie dzienników debugowania nie działa z programem Xamarin Live Player.

Dziennik debugowania nie wyświetla komunikatów dziennika generowanych podczas uruchamiania aplikacji autonomicznej na urządzeniu (tj. gdy jest odłączony od programu Visual Studio).

Uzyskiwanie dostępu do dziennika debugowania z poziomu programu Visual Studio

Aby otworzyć narzędzie Dziennik urządzeń, kliknij ikonę Dziennik urządzenia (logcat) na pasku narzędzi:

Location of Device Log tool on the toolbar

Alternatywnie uruchom narzędzie Dziennik urządzeń z jednego z następujących opcji menu:

  • Wyświetlanie > innego dziennika urządzeń z systemem Windows >
  • Narzędzia > Dziennik urządzeń z systemem Android >

Poniższy zrzut ekranu przedstawia różne części okna Narzędzia debugowania:

Parts of the Debug Tool window

  • Selektor urządzeń — wybiera urządzenie fizyczne lub uruchomiony emulator do monitorowania.

  • Wpisy dziennika — tabela komunikatów dziennika z serwera logcat.

  • Wyczyść wpisy dziennika — czyści wszystkie bieżące wpisy dziennika z tabeli.

  • Odtwarzanie/wstrzymywanie — przełącza się między aktualizowaniem lub wstrzymywaniem wyświetlania nowych wpisów dziennika.

  • Stop — zatrzymuje wyświetlanie nowych wpisów dziennika.

  • Pole wyszukiwania — wprowadź ciągi wyszukiwania w tym polu, aby filtrować podzestaw wpisów dziennika.

Po wyświetleniu okna narzędzia Dziennik debugowania użyj menu rozwijanego urządzenia, aby wybrać urządzenie z systemem Android do monitorowania:

Location of Device Selector

Po wybraniu urządzenia narzędzie Dziennik urządzeń automatycznie dodaje wpisy dziennika z uruchomionej aplikacji — te wpisy dziennika są wyświetlane w tabeli wpisów dziennika. Przełączanie między urządzeniami zatrzymuje się i uruchamia rejestrowanie urządzeń. Należy pamiętać, że projekt systemu Android musi zostać załadowany przed wyświetleniem wszystkich urządzeń w selektorze urządzeń. Jeśli urządzenie nie jest wyświetlane w selektorze urządzenia, sprawdź, czy jest on dostępny w menu rozwijanym urządzenia Visual Studio obok przycisku Start .

Uzyskiwanie dostępu z wiersza polecenia

Inną opcją jest wyświetlenie dziennika debugowania za pośrednictwem wiersza polecenia. Otwórz okno wiersza polecenia i przejdź do folderu narzędzi platformy zestawu SDK dla systemu Android (zazwyczaj folder sdk platform-tools znajduje się w folderze C:\Program Files (x86)\Android\android-sdk\platform-tools.

Jeśli jest dołączone tylko jedno urządzenie (urządzenie fizyczne lub emulator), dziennik można wyświetlić, wprowadzając następujące polecenie:

$ adb logcat

Jeśli dołączono więcej niż jedno urządzenie, urządzenie musi zostać jawnie zidentyfikowane. Na przykład adb -d logcat wyświetla dziennik jedynego połączonego urządzenia fizycznego, podczas gdy adb -e logcat pokazuje dziennik jedynego emulatora uruchomionego.

Więcej poleceń można znaleźć, wprowadzając bazę danych adb i odczytując komunikaty pomocy.

Zapisywanie w dzienniku debugowania

Komunikaty można zapisywać w dzienniku debugowania przy użyciu metod klasy Android.Util.Log. Na przykład:

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

Spowoduje to wygenerowanie danych wyjściowych podobnych do następujących:

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

Można również użyć Console.WriteLine funkcji zapisywania w dzienniku debugowania — te komunikaty są wyświetlane w usłudze logcat z nieco innym formatem danych wyjściowych (ta technika jest szczególnie przydatna podczas debugowania aplikacji platformy Xamarin.Forms w systemie Android):

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

Spowoduje to wygenerowanie danych wyjściowych podobnych do następujących w dzienniku logcat:

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

Interesujące wiadomości

Podczas odczytywania dziennika (a zwłaszcza podczas udostępniania fragmentów dziennika innym osobom) przeszukiwanie pliku dziennika w całości jest często zbyt kłopotliwe. Aby ułatwić nawigowanie po komunikatach dziennika, zacznij od wyszukania wpisu dziennika przypominającego następujące elementy:

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

W szczególności poszukaj wiersza zgodnego z wyrażeniem regularnym, które zawiera również nazwę pakietu aplikacji:

^I.*ActivityManager.*Starting: Intent

Jest to wiersz odpowiadający rozpoczęciu działania, a większość (ale nie wszystkie) poniższych komunikatów powinna odnosić się do aplikacji.

Zwróć uwagę, że każdy komunikat zawiera identyfikator procesu (pid) procesu generującego komunikat. W powyższym ActivityManager komunikacie proces 12944 wygenerował komunikat. Aby określić, który proces jest procesem debugowania aplikacji, poszukaj mono. Komunikat MonoRuntimeProvider :

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

Ten komunikat pochodzi z procesu, który został uruchomiony. Wszystkie kolejne komunikaty zawierające ten identyfikator pid pochodzą z tego samego procesu.