Практическая инструкция: Logcat для быстрой отладки

Logcat показывает логи в реальном времени; чтобы быстро найти причину ошибки откройте панель Logcat, выберите устройство и пакет приложения, установите уровень Error/Warn и ищите FATAL EXCEPTION / NPE — затем читайте стек‑трейс и ищите первые строки с вашим пакетом.

Быстрый старт — как открыть и настроить Logcat

  1. В Android Studio: View → Tool Windows → Logcat. При подключённом устройстве или запущенном эмуляторе список устройств появится в левом верхнем списке.
  2. Выберите устройство и приложение (package). Это автоматически отфильтрует часть системного шума.
  3. Установите уровень логирования: Error → Warn → Info → Debug → Verbose. Для поиска крашей начните с Error+Warn.
  4. Используйте строку фильтра: по TAG, PID, ключевым словам или regex (включается иконкой Aa).

Подключайте реальное устройство по USB с включённой отладкой. Для эмулятора запустите AVD — Logcat подхватит логи автоматически.

Фильтры, поиск и чтение стек‑трейсов

  • Поиск крашей: ищите "FATAL EXCEPTION", "Caused by", "java.lang.NullPointerException", "OutOfMemoryError".
  • Чтение стек‑трейса: найдите первую строку своего пакета (com.example...) — это место, где произошёл сбой в вашем коде; номер строки подскажет файл и строку.
  • PID и TAG: фильтруйте по PID, чтобы не мешались логи других процессов; по TAG происходит фильтрация по вашей метке логирования.
  • Regex: вводите выражения вида NullPointerException|OutOfMemory для захвата нескольких типов ошибок.
  • Примеры adb:
    • Показать ошибки для тега: adb logcat -v threadtime MyTag:*:E
    • Сохранить журнал: adb logcat -d > crash.log
    • Все буферы: adb logcat -b all

Не тратьте время на системные сообщения вроде Choreographer или InputDispatcher, если они явно не связаны с вашим пакетом — фокусируйтесь на ошибках, после которых появляется stacktrace вашего приложения.

Чек‑лист фильтров и быстрых проверок

ФильтрЧто проверить
Ваш package + ErrorПервый стек‑трейс с вашим пакетом — строка и класс ошибки
PIDИзолировать поток приложения от сервисов/других приложений
Regex "NullPointerExceptionOutOfMemory"
adb logcat -b allПроблемы на уровне системы (crash/events/main)

Продвинутые приёмы и интеграция

  • Сохранение и анализ: экспортируйте лог через кнопку Export или adb logcat > файл для совместного анализа и CI.
  • Heap dumps и утечки: при OOM используйте Memory Profiler, сделайте heap dump и ищите удерживающие объекты.
  • ANR: ищите ActivityManager: ANR и долгие операции в UI‑thread; профайлер CPU поможет найти блокирующие вызовы.
  • Автоматизация: в CI можно запускать adb logcat и парсить вывод на предмет FATAL EXCEPTION; для сборки крашей используйте сервисы сбора ошибок на продакшн‑устройствах.
  • Комбинация инструментов: Logcat + Profiler + стек‑трейсы из краш‑сервиса даёт быстрый путь к исправлению 90% багов.

Частые ошибки

  • Фильтр не установлен по пакету — получаете слишком много шума.
  • Число строк в стектрейсе не соответствует исходникам (proguard/minify) — используйте mapping.txt для deobfuscation.
  • Ищете первую строку стека, а не "Caused by" — иногда корень скрыт ниже.
  • Пытаетесь фиксить по системному логу без проверки стека вашего приложения.

FAQ

  • Как быстро найти NPE? — Введите NullPointerException в поиск или regex; найдите первую строку стека с вашим пакетом.
  • Почему стек‑трейс не показывает мои имена методов? — Скорее всего код минифицирован; примените deobfuscation с mapping.txt.
  • Как собрать логи с удалённого устройства пользователя? — Используйте сервисы сбора крашей или попросите пользователя прислать adb logcat -d > log.txt.
  • Что смотреть при ANR? — Ищите записи ActivityManager: ANR и анализируйте main thread в профайлере.

Практикуйтесь читать стек‑трейсы и настраивать фильтры — через несколько итераций Logcat станет инструментом, на который вы тратите минуты, а не часы.