Практическое руководство: снимать Logcat через ADB и Android Studio

Короткий ответ: включите режим разработчика и USB‑отладку, подключите устройство (adb devices), затем используйте adb logcat для стрима или adb logcat -d > file для дампа; в Android Studio откройте окно Logcat; для полного набора используйте adb bugreport.

Подготовка и подключение

  1. На устройстве включите Параметры разработчика и USB debugging (или Wireless debugging для беспроводной отладки).
  2. Подключите по USB и подтвердите запрос "Разрешить отладку по USB?".
  3. Проверьте подключение:
    • 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) для автоматического сбора логов. Укажите предпочитаемую платформу.