Журнал отладки Android
Очень часто разработчики для отладки своих приложений используют вызовы к Console.WriteLine
. Однако на мобильной платформе, такой как Android, консоль отсутствует. На устройствах Android доступен журнал, который можно использовать при создании приложений. Иногда его называют logcat из-за команды, которую нужно ввести для его получения. Для просмотра данных журнала используйте инструмент Журнал отладки.
Общие сведения о журнале отладки Android
Инструмент Журнал отладки позволяет просматривать выходные данные журнала при отладке приложения с помощью Visual Studio. Журнал отладки поддерживает следующие устройства:
- физические телефоны, планшеты и переносные устройства Android;
- виртуальные устройства с Android, работающие в Android Emulator.
Примечание.
Инструмент Журнал отладки не работает с Xamarin Live Player.
Журнал отладки не отображает сообщения журнала, созданные во время автономной работы приложения на устройстве (т. е. пока устройство не подключено к Visual Studio).
Получение доступа к журналу отладки из Visual Studio
Чтобы открыть инструмент Журнал устройств, щелкните значок Журнал устройств (logcat) на панели инструментов:
Кроме того, можно запустить инструмент Журнал устройств, последовательно открыв такие элементы меню:
- Просмотр > других журналов устройств Windows >
- Средства > журнала устройств Android >
На следующем снимке экрана показаны разные элементы окна Инструмент для отладки:
Селектор устройств — выбирает физическое устройство или выполняющийся эмулятор для мониторинга.
Записи журнала — таблица сообщений журнала из logcat.
Очистка записей журнала — очищает все текущие записи журнала из таблицы.
Воспроизведение и приостановка — переключение между обновлением или приостановкой отображения новых записей журнала.
Остановка — останавливает отображение новых записей журнала.
Поле поиска— введите строки поиска в этом поле, чтобы отфильтровать подмножество записей журнала.
Когда отображается окно инструмента Журнал отладки, используйте раскрывающееся меню устройства, чтобы выбрать устройство Android для мониторинга:
После выбора устройства средство журнала устройств автоматически добавляет записи журнала из работающего приложения. Эти записи журнала отображаются в таблице записей журнала. При переключении между устройствами ведение журнала устройств останавливается и запускается. Обратите внимание, что проект 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, отправляются этим же процессом.