Журнал отладки Android

Очень часто разработчики для отладки своих приложений используют вызовы к Console.WriteLine. Однако на мобильной платформе, такой как Android, консоль отсутствует. На устройствах Android доступен журнал, который можно использовать при создании приложений. Иногда его называют logcat из-за команды, которую нужно ввести для его получения. Для просмотра данных журнала используйте инструмент Журнал отладки.

Общие сведения о журнале отладки Android

Инструмент Журнал отладки позволяет просматривать выходные данные журнала при отладке приложения с помощью Visual Studio. Журнал отладки поддерживает следующие устройства:

  • физические телефоны, планшеты и переносные устройства Android;
  • виртуальные устройства с Android, работающие в Android Emulator.

Примечание.

Инструмент Журнал отладки не работает с Xamarin Live Player.

Журнал отладки не отображает сообщения журнала, созданные во время автономной работы приложения на устройстве (т. е. пока устройство не подключено к Visual Studio).

Получение доступа к журналу отладки из Visual Studio

Чтобы открыть инструмент Журнал устройств, щелкните значок Журнал устройств (logcat) на панели инструментов:

Location of Device Log tool on the toolbar

Кроме того, можно запустить инструмент Журнал устройств, последовательно открыв такие элементы меню:

  • Просмотр > других журналов устройств Windows >
  • Средства > журнала устройств Android >

На следующем снимке экрана показаны разные элементы окна Инструмент для отладки:

Parts of the Debug Tool window

  • Селектор устройств — выбирает физическое устройство или выполняющийся эмулятор для мониторинга.

  • Записи журнала — таблица сообщений журнала из logcat.

  • Очистка записей журнала — очищает все текущие записи журнала из таблицы.

  • Воспроизведение и приостановка — переключение между обновлением или приостановкой отображения новых записей журнала.

  • Остановка — останавливает отображение новых записей журнала.

  • Поле поиска— введите строки поиска в этом поле, чтобы отфильтровать подмножество записей журнала.

Когда отображается окно инструмента Журнал отладки, используйте раскрывающееся меню устройства, чтобы выбрать устройство Android для мониторинга:

Location of Device Selector

После выбора устройства средство журнала устройств автоматически добавляет записи журнала из работающего приложения. Эти записи журнала отображаются в таблице записей журнала. При переключении между устройствами ведение журнала устройств останавливается и запускается. Обратите внимание, что проект Android следует загрузить до того, как любые устройства будут отображаться в селекторе устройства. Если устройство не отображается в селекторе устройства, убедитесь, что оно доступно в раскрывающемся меню Visual Studio на устройстве рядом с кнопкой Пуск.

Доступ из командной строки

Кроме того, просмотреть журнал отладки можно с помощью командной строки. Откройте окно командной строки и перейдите в папку платформы sdk для Android (как правило, папка sdk platform-tools находится в папке C:\Program Files (x86)\Android\android-sdk\platform-tools).

Если подключено только одно устройство (физическое устройство или эмулятор), для просмотра журнала можно просто ввести следующую команду:

$ adb logcat

Если подключено несколько устройств, необходимо явно указать нужное устройство. Например, при выполнении команды adb -d logcat отображается только журнал подключенного физического устройства, а при выполнении команды adb -e logcat — только журнал запущенного эмулятора.

Чтобы узнать дополнительные команды, введите adb и прочитайте сообщения справки.

Запись в журнал отладки

Записывать сообщения в журнал отладки можно с помощью методов класса Android.Util.Log. Например:

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

Вы увидите приблизительно следующее:

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

Также можно использовать запись в журнал отладки. Эти сообщения отображаются в logcat с немного другим форматом выходных данных (этот метод особенно полезен Console.WriteLine при отладке приложений Xamarin.Forms на Android):

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

Это выведет в logcat примерно следующее:

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

Интересующие сообщения

При чтении журнала (особенно если фрагменты журнала предоставляются другим пользователям) изучаемое содержимое файла журнала в полном объеме часто является слишком громоздким. Чтобы упростить навигацию по сообщениям журнала, для начала найдите запись журнала, которая выглядит следующим образом:

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

В частности, найдите строку, которая соответствует регулярному выражению, также содержащему имя пакета приложения:

^I.*ActivityManager.*Starting: Intent

Это строка, которая соответствует началу действия, и большинство (но не все) следующих сообщений должны иметь отношение к приложению.

Обратите внимание, что каждое сообщение содержит идентификатор процесса (pid) для процесса, создающего сообщение. В указанном выше сообщении ActivityManager сообщение было создано процессом 12944. Чтобы определить, какой процесс является процессом отлаживаемого приложения, найдите сообщение mono.MonoRuntimeProvider:

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

Это сообщение отправляется запущенным процессом. Все последующие сообщения, содержащие этот pid, отправляются этим же процессом.