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

109

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

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

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

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

Ответы:

59

Android 4.1 и новее

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

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

Android 4.0 и старше

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

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

Расположение файла журнала

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

  • /data/anr: Некоторые файлы трассировки, похоже, попадают сюда (Dalvik записывает трассировки стека здесь в ANR, то есть «Приложение не отвечает» или «Force-Close»; см., Например, выдержки из журнала здесь )
  • /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, эти данные теряются при перезагрузке и не соответствуют вопросу OP.

Журнал команд для использования с терминальным приложением (или 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

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

# 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, смотрите здесь .
тестирование
Или просто проверьте наш log -tag-wiki @testing - там есть еще ссылки :)
Иззи
Ссылка на «Отладка дампа ядра Android» мертва, можем ли мы найти альтернативу?
Spidey
1
@Spidey всегда есть Archive.ORG для такого рода проблем (ссылка идет на рабочую копию там).
Иззи
12

Обнаружено, что CatLog отображает журнал Android немного лучше, чем aLogcat. Кроме того adb logcat, это то, что я использую.

поток
источник
Смотрите мой комментарий выше, касающийся приложений LogCat.
Леандрос
2
Я обновил вопрос. Обратите внимание, что информация об относительной позиции (например, «выше») может легко устареть, поскольку порядок ответов может меняться со временем.
Поток
3

Метод без рута, который работает даже с новыми версиями 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: вы не знаете, как открыть терминал? LOL | На Mac: введите TerminalSpotlight и откройте его
  7. CD в ​​каталог, где находится исполняемый файл adb. В Windows: перейдите в каталог, в который вы скачали исполняемый файл adb, Shift + щелчок правой кнопкой мыши и выберите «Открыть консоль» (или аналогичный) | В Linux / Mac: щелкните правой кнопкой мыши в каталоге и выберите «Открыть терминал здесь» (или просто CD в каталог)
  8. Введите свой cmd / терминал: adb devicesчтобы убедиться, что ваше устройство правильно подключено.
  9. Если ваше устройство выбрано правильно, введите, adb logcatчтобы показать могучий и волшебный logcat aka stacktrace.
  10. Воспроизведите вашу ошибку (или что-то еще) на вашем устройстве.
  11. Сразу после этого вставьте все окно cmd / терминала в сервис вставки, например http://pastebin.com/, и отправьте его нам.

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

Николас Рауль
источник
2

Бесплатное приложение SysInfo ( Project Page ) будет отображать системные журналы, а также архивировать полный системный отчет для отправки по электронной почте, в Dropbox, NFC и т. Д. Не говоря уже о множестве другой интересной информации о системе.

JRobert
источник
(Да, я опоздал почти на год, но об этом нужно упомянуть).
JRobert
Обе ссылки битые сейчас.
jk7
Вторая ссылка (страница проекта) по-прежнему работает для меня, но последние записи в ней относятся к 2010 году. Android с тех пор изменился с тех пор, что сильно нарушил функциональность Sysinfo.
JRobert
-1

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

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