Где искать и как сохранить логи Android (logcat, ANR, дампы)
Короткий ответ: без рута используйте ADB — adb logcat и adb bugreport (или adb logcat > файл) для сохранения логов; с root можно копировать /data, /data/anr, /sys/fs/pstore и /proc/kmsg. Ниже — пошаговые команды и советы для быстрой диагностики.
Быстрый способ: извлечь логи без root (через ADB)
- Подготовка:
- Включите "Для разработчиков" и "Отладку по USB".
- Установите platform-tools (ADB) на ПК.
- Проверка подключения:
- adb devices
- Сохранение текущих логов в файл:
- adb logcat -d -v time > logs.txt (флаг -d снимает буфер и завершает запись)
- Сохранение потоковых логов:
- adb logcat -v time > live_logs.txt Остановите Ctrl+C.
- Фильтрация по уровню/тегу/приложению:
- Все ошибки: adb logcat *:E -v time > errors.txt
- По тегу: adb logcat MyTag:V *:S > tag_logs.txt
- По PID (на Linux/macOS): adb logcat --pid=$(adb shell pidof com.example.app) > app.txt
- На ПК можно дополнительно использовать grep: adb logcat | grep "com.example.app" > app.txt
- Полный отчёт (bugreport):
- adb bugreport bugreport.zip В архиве будут логи, dumpsys, tracestate — удобно отправить разработчику.
Если нужно только снимок буфера — используйте adb logcat -d; для длительной съёмки — поток (не забывайте контролировать размер).
Извлечение логов на рутованном устройстве
Root даёт доступ к файлам, которые недоступны через обычный ADB:
- Краш-дампы и ANR: /data/anr/, /data/tombstones/
- Системные дампы: /sys/fs/pstore/, /proc/kmsg, /d/ (зависит от прошивки) Команды:
- adb root
- adb pull /data/anr/traces.txt ./traces.txt
- adb pull /sys/fs/pstore/ ./pstore_dump Мобильные приложения для удобства: MatLog, CatLog (F‑Droid) — с root работают быстрее и могут экспортировать ZIP/TXT.
Копирование системных файлов и изменение SELinux-политик опасно. Не меняйте права и контент в /system и /data без понимания последствий.
Сохранение, фильтрация и базовый анализ логов
- Форматирование: используйте -v time для точных временных меток.
- Удаление старых логов: adb logcat -c
- Автоматизация (Linux/macOS):
- adb logcat -c; adb logcat -d > $(date +%Y%m%d)_logs.txt
- Поиск в файле: ищите "FATAL EXCEPTION", "ANR", "Exception", PID вашего приложения.
- Инструменты: откройте логи в VS Code/Notepad++ — включите подсветку строк и фильтры.
- Перед отправкой разработчику: оставьте только нужные фрагменты и удалите личные данные (телефоны, токены).
Для долгосрочной диагностики добавьте в сбор логи stacktrace, bugreport и файл конфигурации приложения (если нужны дополнительные контексты).
Частые ошибки
- Устройство не в списке adb devices — включите отладку по USB и подтвердите ключ RSA на телефоне.
- Логи слишком объёмны — применяйте фильтры по тегу/уровню/пиду и ротируйте файлы.
- Нужные файлы (например /data/anr) недоступны — без root получить их нельзя; запросите bugreport у пользователя.
- Logcat быстро перезаписывает старые записи — перед длительным тестом очистите буфер и начните запись в файл.
FAQ
- Как получить логи с телефона без ПК?
На нерутованном устройстве можно установить приложение-перехватчик logcat (некоторые требуют разрешений или root). Надёжнее — подключиться по ADB через телефон с OTG+клавой/ПК. - Что важнее: logcat или bugreport?
Logcat — быстрый поток ошибок; bugreport — комплексный архив с доп. данными (dumpsys, трассировки). Для серьезных багов требуйте bugreport. - Можно ли фильтровать по времени?
В logcat нет прямого фильтра по времени, поэтому сохраняйте файл с метками времени (-v time) и используйте поиск по временным меткам в редакторе.
Если нужно, подготовлю набор команд под Windows или скрипт для автоматического сбора логов и их загрузки в архив.