Как просмотреть и изучить журнал Android?

В системном журнале Android есть много интересного, полезного во многих отношениях.

  • найти первопричины проблем
  • выявить некорректно работающие приложения

Как просмотреть и изучить журнал Android?

Комментарии не для расширенного обсуждения; этот разговор был перемещен в чат .

Ответы (4)

Андроид 4.1 и новее

Предпочтительным способом является загрузка SDK и использование adb logcat(требуется активировать «параметры разработчика» на устройстве).

Существуют приложения для просмотра полного системного журнала, однако они работают только на устройствах с root-доступом или требуют ввода команды вручную adb, чтобы заставить их работать. Для получения дополнительной информации см. этот вопрос.

Андроид 4.0 и старше

Вы можете загрузить SDK и использовать adb logcatили получить Logcat Extrem из магазина Google Play, который показывает журнал прямо на вашем телефоне.

Кроме того, вы можете использовать эмулятор терминала с командой «logcat > /sdcard/log.txt» для непрерывной записи журнала в файл на SD-карте. Это может помочь выяснить проблемы со случайными перезагрузками.
Хорошая точка зрения. Некоторые телефоны склонны спамить журнал, полный тривиальной информации, поэтому, если вы хотите свести к минимуму размер файла и данные для прохождения, ознакомьтесь с разделом «Фильтрация вывода журнала» на сайте developer.android.com/guide/developing/tools/adb.html . #логкот
Приложения LogCat больше не работают с JellyBean. Google изменил API Android, приложения больше не имеют разрешения на чтение журналов других приложений, кроме своих собственных.
Я создал простую утилиту для сбора логов с ПК: gist.github.com/hrj/5983971 .

Расположение лог-файла

Есть несколько каталогов, в которых могут появляться журналы (в том числе журналы сбоев) — не все из них стандартизированы (т. е. некоторые могут быть специфичными для ПЗУ).

  • /data/anr: кажется, что некоторые файлы трассировки попадают сюда (Dalvik записывает трассировку стека здесь в ANR, т.е. «Приложение не отвечает», также известное как «Принудительное закрытие»; см., например, выдержки из журнала здесь )
  • /data/dontpanicкажется стандартным расположением (AOSP) и содержит некоторые журналы сбоев, включая трассировки (см., например, viaForensics и StackOverflow )
  • /data/kernelpanics— это еще одно место — у меня не было «паники ядра» на моих устройствах Android, и я еще не видел там контента.
  • может указывать на /data/panic/panic_daemon.configдругие настроенные местоположения - на моем Droid 2 упоминается/sdcard/panic_data/
  • упомянутый Droid 2 также имеет /data/panicreportsкаталог (здесь пустой)
  • /data/tombstonesможет содержать несколько tombstone_nnфайлов ( nnпоследовательный, увеличивающийся с каждым новым файлом). Поскольку надгробные плиты ставятся для мертвых, здесь это делается для «процессов, умерших случайно» (т.е. аварийных) — и это то, что называется «дампами ядра» в системах Linux/Unix. Однако не все приложения создают надгробия; это должно быть явно разрешено разработчиком (см. Отладка дампов ядра Android ).

Могут быть и другие места, которые ускользнули от меня; но поскольку большая часть журналов выполняется на tmpfs, эти данные теряются при перезагрузке и не соответствуют вопросу ОП.

Команды журнала для использования с терминальным приложением (или adb)

Несколько команд могут дать вам массу информации. Для большинства из них рекомендуется перенаправить их в файл ( > filename.ext) или пропустить через фильтр ( | grep search-for-this):

Журнал ядра

Без рута работает следующее:

$ dmesg
<6>[82839.126586] PM: Syncing filesystems ... done.
<7>[82839.189056] PM: Preparing system for mem sleep
<4>[82839.189361] Freezing user space processes ... (elapsed 0.05 seconds) done.
<4>[82839.240661] Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done.
<snip>

Логкэт

Здесь вы можете, например, указать, какая область вас интересует - радио, события...

# logcat -b events
I/am_create_service( 3457): [1085416560,nitro.phonestats/.widget.WidgetProvider4x1$WidgetUpdateService4x1,,3721]
I/am_destroy_service( 3457): [1085416560,nitro.phonestats/.widget.WidgetProvider4x1$WidgetUpdateService4x1,3721]
I/notification_cancel( 3457): [nitro.phonestats,4,0] 
<snip>

Получение информации об устройстве

И тонны этого: характеристики устройства, информация об учетной записи, услуги...

$ dumpsys
Currently running services:
  LocationProxyService
  SurfaceFlinger
  accessibility
  account
  activity
<snip>
DUMP OF SERVICE account:
Accounts:
  1 Account {name=xxxxxxx@googlemail.com, type=com.google}
<snip> 

$ dumpstate
========================================================
== dumpstate: 2012-08-18 23:39:53
========================================================

Build: Gingerbread GWK74 - CyanogenMilestone2
Bootloader: 0x0000
Radio: unknown 
<snip>
------ MEMORY INFO (/proc/meminfo) ------
MemTotal: 487344 kB
MemFree: 10436 kB 
<snip>

Все в одном

Сделайте большой шар из всего вместе, от logcat до dumpstate:

$ bugreport > /mnt/sdcard/bugreport.txt

Я почти уверен, что вы действительно хотите перенаправить последнюю команду... xD

Кое-что о разрешениях

PS: Естественно, для доступа к этой информации может потребоваться root, так как большинство источников находятся во внутренней памяти.

Чтобы получить больше информации о командах adb logcat, см . здесь .
Или просто загляните в наш тэг логирования-вики @testing — там еще больше ссылок :)
Для всех, кто, как и я, новичок в Android, для запуска вышеуказанных команд вам необходимо сначала запустить $ adb shellподключение к устройству через терминал. (Конечно, убедитесь, что ваше устройство подключено к компьютеру и включена отладка по USB.)

Метод без рута, который работает даже с новыми версиями Android:

Предпосылки:

  • Linux, Windows или Mac
  • USB-кабель для вашего устройства
  • Android-устройство

Инструкции:

  1. Установите драйвер устройства для использования adb. Все, что вам нужно, вы найдете здесь
  2. Загрузите исполняемый файл adb для вашей ОС. Это часть Android SDK, но вы можете найти исполняемый файл adb отдельно.
  3. Подключите ваше Android-устройство.
  4. Включите параметры разработчика .
  5. Включите отладку по USB.
  6. Откройте командную строку (Windows) или терминал (Linux/Mac). Как это сделать: В Windows: windows + r > введите "cmd" (без кавычек) > нажмите Enter | В Linux: вы не знаете, как открыть терминал? ЛОЛ | На Mac: введите TerminalSpotlight и откройте его .
  7. компакт-диск в каталог, где находится исполняемый файл adb. В Windows: перейдите в каталог, в который вы загрузили исполняемый файл adb, Shift + щелкните правой кнопкой мыши и выберите «Открыть консоль» (или аналогичный) | В Linux / Mac: щелкните правой кнопкой мыши в каталоге и выберите «Открыть терминал здесь» (или просто перейдите в каталог).
  8. Введите свой cmd/terminal: adb devicesчтобы убедиться, что ваше устройство правильно подключено.
  9. Если ваше устройство выбрано правильно, введите его, adb logcatчтобы отобразить могучий и волшебный logcat, также известный как трассировка стека.
  10. Воспроизведите вашу ошибку (или что-то еще) на вашем устройстве.
  11. Сразу после этого вставьте все окно cmd / терминала в сервис вставки, например http://pastebin.com/ , и отправьте его нам.

(В основном скопировано с Леандроса )

ADB можно скачать отсюда: developer.android.com/studio/releases/platform-tools

Он расположен в /sdcard/bugreports.

У меня никогда не было такой папки на телефоне... это специфика производителя или устройства?
Из Logcat — CyanogenMod Wiki : вы можете использовать волшебную комбинацию клавиш, чтобы создать файл отчета об ошибке в /sdcard/bugreports. Так что это кажется а) немного специфичным (вероятно, для CM) и б) не ответом на вопрос, поскольку ОП ищет «автоматически сгенерированные».