Практическое руководство: снимать Logcat через ADB и Android Studio
Короткий ответ: включите режим разработчика и USB‑отладку, подключите устройство (adb devices), затем используйте adb logcat для стрима или adb logcat -d > file для дампа; в Android Studio откройте окно Logcat; для полного набора используйте adb bugreport.
Подготовка и подключение
- На устройстве включите Параметры разработчика и USB debugging (или Wireless debugging для беспроводной отладки).
- Подключите по USB и подтвердите запрос "Разрешить отладку по USB?".
- Проверьте подключение:
- adb devices — покажет список и статус (device/unauthorized).
- adb -s
shell getprop ro.build.version.release — проверка версии при необходимости.
При первом подключении устройство попросит разрешить отладку: подтвердите. Если статус unauthorized — переподключите кабель и проверьте экран телефона.
Команды adb logcat — практические примеры
Основные команды и полезные шаблоны, которые можно копировать:
-
Стрим в реальном времени с метками времени: adb logcat -v time
-
Сохранить поток в файл на компьютере (остановка Ctrl+C): adb logcat -v time > device-log-$(date +%F_%T).txt
-
Дамп текущих буферов и выход: adb logcat -d -v threadtime > dump-logs.txt
-
Очистить буфер перед тестом: adb logcat -c
-
Писать лог на устройстве и затем pull: adb logcat -f /sdcard/myapp-log.txt -v time adb pull /sdcard/myapp-log.txt ./myapp-log.txt
-
Вывод только ошибок: adb logcat *:E
-
Фильтрация по тегу: adb logcat MyTag:D *:S
-
Фильтрация по PID (надежнее, чем grep): adb logcat --pid $(adb shell pidof -s com.example.app)
-
Посмотреть последние N строк: adb logcat -t 200 -v threadtime
Замечание: опции и поддержка флагов зависят от версии platform-tools и устройства; выполните adb logcat --help при необходимости.
Чтобы поймать логи вокруг падения: запустите adb logcat -v time > log.txt, воспроизведите проблему, остановите и ищите по точному timestamp.
Android Studio и сбор полного bugreport
Logcat в Android Studio:
- View → Tool Windows → Logcat. Выберите устройство и процесс (Process) — IDE автоматически покажет логи процесса.
- Используйте фильтры по уровню, тегу, тексту; сохраняемые фильтры ускоряют повторные исследования.
- Экспорт: выделите сообщения → Save as.
Собрать полный bugreport:
- adb bugreport ./bugreport-$(date +%F_%T).zip Файл содержит несколько буферов logcat, dumpsys, ANR traces и системную информацию — полезно для инженеров. Генерация занимает время и может быть большим по объёму.
Нельзя просить обычное приложение читать чужие логи через android.permission.READ_LOGS — доступ ограничен для системных/подписанных приложений. Для удалённого сбора логов делайте внутри‑приложные логи с явным согласием пользователя.
Частые ошибки
- Статус unauthorized в adb devices — откройте экран устройства и подтвердите доступ.
- "Пропали" нужные строки — лог‑буферы ограничены, заранее очищайте и/или пишите в файл.
- Неверная фильтрация — используйте --pid вместо grep по package name для надёжности.
- Некорректная временная метка — выбирайте -v time или -v threadtime для удобного поиска.
FAQ
-
Как получить логи только моего приложения?
Используйте adb logcat --pid $(adb shell pidof -s com.example.app) или в Android Studio выберите процесс. -
Как быстро собрать и отправить инженеру?
adb bugreport ./bugreport--$(date +%F_%T).zip — затем передайте архив. -
Можно ли читать системные логи из кода приложения?
Нет — READ_LOGS для сторонних приложений недоступен. Логи собирайте внутри приложения и отправляйте по договорённому каналу.
Если нужно, подготовлю компактный cheat‑sheet с командами или скрипт (bash/PowerShell) для автоматического сбора логов. Укажите предпочитаемую платформу.