Команда adb logcat — первое, что запрашивает разработчик или техподдержка, когда приложение на Android вылетает без видимой ошибки, а стандартный отчёт не отправляется. Лог через ADB показывает системные события в реальном времени: стек-трейсы падений, ошибки сервисов, действия процессов. Без него диагностика многих сбоев превращается в гадание.
В этой статье разберём полный цикл: от установки ADB на компьютер до фильтрации потока событий и сохранения лога в файл для отправки разработчику. Инструкция подходит для Windows; на macOS и Linux команды идентичны, отличается только способ установки инструментов.
Что такое ADB и зачем нужен logcat
ADB (Android Debug Bridge) — официальная утилита из состава Android SDK Platform-Tools, которая связывает компьютер со смартфоном по USB или Wi-Fi. Через неё устанавливают приложения, выполняют shell-команды и, что важно для нас, читают системный журнал.
Logcat — это поток сообщений, который Android ведёт постоянно. Каждое событие имеет уровень важности: от отладочного (Debug) до критического (Fatal). Когда приложение падает, в логе появляется строка FATAL EXCEPTION со стек-трейсом — именно она указывает причину сбоя.
Обратите внимание: объём потока огромен, десятки строк в секунду. Поэтому снятие лога почти всегда сопровождается фильтрацией — об этом отдельный раздел ниже.
Установка ADB на компьютер
Скачайте архив SDK Platform-Tools с официального сайта developer.android.com — это единственный источник, которому можно доверять. Сторонние «установщики ADB в один клик» часто содержат устаревшие версии или лишнее ПО.
Распакуйте архив в простую папку, например C:\platform-tools. Затем откройте командную строку в этой папке: в проводнике Windows зажмите Shift, кликните правой кнопкой по пустому месту и выберите пункт открытия терминала, либо введите cmd в адресной строке папки.
Проверьте работоспособность командой:
adb version
Если вывелась версия утилиты — установка завершена. Если система пишет, что команда не найдена, вы запустили терминал не в той папке.
Подготовка смартфона: отладка по USB
На телефоне нужно активировать режим разработчика. Откройте Настройки → О телефоне и семь раз нажмите на пункт Номер сборки (на некоторых прошивках он называется «Версия MIUI», «Версия EMUI» и т.п. — ищите пункт с номером сборки прошивки). Система запросит PIN-код и сообщит, что вы стали разработчиком.
После этого в настройках появится раздел Для разработчиков (обычно внутри «Система» или «Расширенные настройки»). Включите в нём переключатель Отладка по USB.
- 🔌 Подключите телефон кабелем, поддерживающим передачу данных — зарядные кабели без data-линий не подойдут.
- 📱 При первом подключении на экране смартфона появится запрос «Разрешить отладку по USB?» — отметьте «Всегда разрешать с этого компьютера» и подтвердите.
- 🔄 Если запрос не появился, смените режим USB в шторке уведомлений с «Только зарядка» на «Передача файлов (MTP)».
- 🖥️ На Windows при проблемах с определением устройства может потребоваться драйвер от производителя смартфона.
Проверьте соединение командой adb devices. В списке должна появиться строка с серийным номером и статусом device. Статус unauthorized означает, что разрешение на телефоне не подтверждено.
⚠️ Внимание: отладка по USB даёт компьютеру расширенный доступ к устройству. После завершения работы с логами отключайте её, особенно если смартфон используется ежедневно. Не подтверждайте отладку на чужих компьютерах и публичных зарядных станциях.
Снятие лога: базовые команды logcat
Минимальный рабочий сценарий выглядит так. Запустите запись лога в файл:
adb logcat -v threadtime > log.txt
Флаг -v threadtime добавляет к каждой строке дату, время и идентификатор потока — без временных меток разработчик часто не сможет сопоставить лог с моментом ошибки, и лог придётся снимать заново.
Пока команда выполняется, возьмите телефон и воспроизведите проблему: откройте сбоящее приложение, повторите действия, которые приводят к вылету. Затем вернитесь к компьютеру и остановите запись комбинацией Ctrl+C. Файл log.txt появится в текущей папке.
☑️ Правильное снятие лога
Полезная подготовительная команда — adb logcat -c. Она очищает буфер лога, чтобы в файл не попали события за прошлые часы. Очищайте буфер непосредственно перед воспроизведением ошибки.
Фильтрация: как не утонуть в потоке событий
Сырой лог за минуту работы может занимать мегабайты. Чтобы найти нужное, используйте фильтры по тегу и уровню важности.
Общий синтаксис: adb logcat Тег:Уровень. Уровни по возрастанию критичности: V (Verbose), D (Debug), I (Info), W (Warning), E (Error), F (Fatal). Например, показать только ошибки и фатальные сбои всех процессов:
adb logcat *:E
Если известен идентификатор процесса приложения, фильтруйте по нему через --pid. Узнать PID можно командой adb shell pidof com.example.app, подставив имя пакета приложения. Для поиска конкретного слова в потоке на Windows удобен findstr:
adb logcat | findstr "FATAL"
| Команда | Что делает |
|---|---|
adb logcat -v threadtime | Лог с метками времени и потоков |
adb logcat *:E | Только ошибки и фатальные сбои |
adb logcat -c | Очистка буфера лога |
adb logcat -d | Выгрузить текущий буфер и завершить работу |
adb logcat -b crash | Только буфер падений приложений |
Типичные проблемы и их решение
Самая частая ситуация — adb devices показывает пустой список. Проверяйте по порядку: кабель (замените на заведомо рабочий с передачей данных), порт USB (подключите напрямую к компьютеру, без хаба), включённую отладку по USB и драйвер устройства в диспетчере устройств Windows.
Вторая типичная проблема — статус unauthorized. Отзовите разрешения на телефоне: в разделе для разработчиков нажмите Отозвать разрешения на отладку по USB, затем переподключите кабель и подтвердите запрос заново.
- 🐢 Лог пустой или обрывается — проверьте, не «засыпает» ли USB-порт; отключите экономию энергии для USB в Windows.
- 🔒 Некоторые приложения скрывают свои логи в release-сборках — это ограничение самой программы, обойти его без root нельзя.
- 📵 На ряде прошивок (например, отдельные версии MIUI) есть дополнительный переключатель «Отладка по USB (настройки безопасности)» — без него часть команд недоступна.
⚠️ Внимание: файл лога может содержать персональные данные — фрагменты уведомлений, имена контактов, геометки, идентификаторы устройства. Перед отправкой лога разработчику или публикацией на форуме откройте его в текстовом редакторе и удалите чувствительные строки.
Как снять лог без компьютера
Некоторые приложения (например, Logcat Reader из открытых источников) умеют читать лог прямо на устройстве, но на современных версиях Android им требуется специальное разрешение, которое всё равно выдаётся через ADB командой: adb shell pm grant имя.пакета android.permission.READ_LOGS. То есть полностью без ПК обойтись обычно нельзя — но дальнейшие снятия логов можно делать уже на самом смартфоне.
Альтернативы: bugreport и лог по Wi-Fi
Если техподдержка просит «полный багрепорт», одного logcat недостаточно. Команда adb bugreport report.zip собирает расширенный архив: логи всех буферов, состояние сервисов, дампы процессов. Сборка занимает несколько минут, архив сохраняется в текущую папку.
От кабеля можно избавиться, активировав беспроводную отладку. На Android 11 и новее в разделе для разработчиков есть пункт Беспроводная отладка с сопряжением по коду. На компьютере выполняется adb pair IP:порт с данными с экрана телефона, затем adb connect. Оба устройства должны быть в одной сети Wi-Fi. Точные названия пунктов и наличие функции зависят от версии Android и прошивки — сверяйтесь с меню своего устройства.
Частые вопросы
Нужен ли root для снятия логов через ADB?
Нет. Чтение основного лога через adb logcat доступно без root-прав — достаточно включённой отладки по USB. Root требуется лишь для доступа к защищённым буферам и логам ядра на некоторых устройствах.
Лог слишком большой, как уменьшить его размер?
Очистите буфер командой adb logcat -c прямо перед воспроизведением проблемы, сократите время записи до минимума и используйте фильтры по уровню (*:E) или по тегу приложения. Также можно сжать файл в zip перед отправкой.
Что искать в логе при вылете приложения?
Ищите строки FATAL EXCEPTION и AndroidRuntime. Под ними следует стек-трейс: тип исключения (например, NullPointerException) и цепочка вызовов с именами классов — именно этот фрагмент нужен разработчику.
Почему adb не видит телефон, хотя отладка включена?
Наиболее вероятные причины: кабель без линий передачи данных, не установлен драйвер устройства в Windows, не подтверждён запрос на разрешение отладки на экране смартфона или активен режим USB «Только зарядка». Проверяйте эти пункты последовательно, меняя кабель первым делом.
Безопасно ли оставлять отладку по USB включённой?
Постоянно держать её включённой не стоит: любой компьютер, которому вы однажды выдали разрешение, получает расширенный доступ к устройству. После снятия логов отключите отладку и при желании отзовите ранее выданные разрешения в разделе для разработчиков.