Запись трассировки системы Android через пункт Системная трассировка в меню разработчика позволяет увидеть, чем занят процессор в момент фризов интерфейса, пропусков кадров и зависаний приложений — без этого инструмента диагностика лагов превращается в гадание. Инструмент System Tracing встроен в Android начиная с современных версий ОС и использует движок Perfetto, который фиксирует события ядра, планировщика и приложений с минимальным влиянием на производительность.
В этом руководстве разберём, как активировать трассировку, выбрать правильные категории событий, записать trace-файл через быстрые настройки или ADB и открыть его для анализа. Инструкция подходит для разработчиков и опытных пользователей, которые хотят найти причину подтормаживаний устройства.
Что такое трассировка системы и когда она нужна
Трассировка системы — это запись низкоуровневых событий устройства за короткий промежуток времени: какие потоки выполнялись на каждом ядре процессора, сколько длился рендеринг кадра, когда срабатывали системные вызовы. Результат сохраняется в файл с расширением .perfetto-trace или .ctrace, который затем открывается в специальном анализаторе.
Инструмент полезен в нескольких типовых ситуациях:
- 📉 Приложение фризит при скролле, и нужно понять, виноват основной поток или графический конвейер
- 🔋 Устройство нагревается без видимой нагрузки — требуется проверить активность фоновых процессов
- 🎮 В игре проседает частота кадров, и нужно определить узкое место: CPU, GPU или ввод-вывод
- 🛠️ Разработчик отлаживает собственное приложение и хочет добавить кастомные маркеры событий
Обычному пользователю трассировка нужна редко, но именно её данные чаще всего просят прикрепить к баг-репорту инженеры поддержки, когда стандартные логи ничего не показывают.
Подготовка: включение режима разработчика
Все функции трассировки скрыты в разделе Для разработчиков, который по умолчанию не отображается в настройках. Чтобы его открыть, перейдите в Настройки → О телефоне и семь раз подряд нажмите на пункт Номер сборки. Система запросит PIN-код или графический ключ, после чего раздел появится в меню — обычно в Настройки → Система → Для разработчиков, хотя точный путь зависит от оболочки производителя.
Внутри раздела найдите пункт Системная трассировка (в английской локали — System Tracing). Если его нет, возможные причины две: либо производитель убрал инструмент из своей прошивки, либо версия Android слишком старая. В таком случае остаётся вариант с записью через ADB, о котором ниже.
Настройка параметров записи
Откройте Системная трассировка и изучите доступные опции. Ключевая из них — категории событий: это наборы источников данных, которые будут записываться. Чем больше категорий включено, тем полнее картина, но тем быстрее растёт размер буфера и нагрузка на систему.
Основные параметры, которые стоит настроить перед записью:
- 📂 Категории — для диагностики лагов интерфейса обычно достаточно sched, freq, gfx, view и am; для проблем с диском добавьте disk и file system
- 💾 Размер буфера — объём памяти на одно ядро CPU; больший буфер позволяет писать дольше без потери событий
- ⏱️ Длительность записи — в некоторых прошивках можно ограничить время захвата, иначе запись останавливается вручную
- 📲 Показ в быстрых настройках — добавляет плитку «Запись трассировки» в шторку уведомлений
⚠️ Внимание: не включайте все категории подряд «на всякий случай». Избыточный набор событий раздувает файл до сотен мегабайт, замедляет устройство во время записи и затрудняет последующий анализ. Начинайте с минимального набора под конкретную проблему.
Запись трассировки: пошаговая инструкция
Самый удобный способ — запись через плитку в быстрых настройках. Опустите шторку, найдите значок Запись трассировки (при необходимости добавьте его через редактирование плиток) и нажмите на него. Система покажет уведомление о начале захвата, после чего воспроизведите проблему: запустите лагающее приложение, поскролльте список, повторите действия, вызывающие фриз.
Когда проблемный момент записан, нажмите на уведомление или плитку повторно — запись остановится, а файл сохранится в хранилище устройства. Обычно он попадает в папку Download или предлагается к отправке через системное меню «Поделиться».
☑️ Чек-лист записи трассировки
Альтернативный метод — запись через ADB с компьютера. Это даёт более тонкий контроль над параметрами и не зависит от наличия пункта в меню прошивки. Базовая команда выглядит так:
adb shell perfetto -o /data/misc/perfetto-traces/trace.pftrace -t 20s sched freq gfx view am
Здесь -t 20s задаёт длительность записи в секундах, а перечисленные в конце слова — категории событий. Готовый файл забирается командой adb pull. Учтите, что синтаксис может отличаться в зависимости от версии Android, поэтому при ошибке сверьтесь с официальной документацией Perfetto для вашей версии ОС.
Сравнение способов записи трассировки
| Способ | Требования | Гибкость настройки | Кому подходит |
|---|---|---|---|
| Плитка в быстрых настройках | Меню разработчика | Низкая — настройки из меню System Tracing | Пользователям и тестировщикам |
| Меню System Tracing | Меню разработчика | Средняя — категории, буфер, длительность | Тем, кто пишет trace время от времени |
| ADB + Perfetto | ПК, драйверы, USB-отладка | Высокая — конфиг-файлы, любые параметры | Разработчикам и инженерам |
| Конфиг Perfetto из файла | ADB, знание формата конфига | Максимальная — триггеры, ftrace, heap-профили | Продвинутым разработчикам |
Для разовой диагностики лагов достаточно плитки в шторке. Если же нужно записать длинный сценарий с точным набором источников данных или автоматизировать сбор — без ADB не обойтись.
Что такое конфиг Perfetto и зачем он нужен
Perfetto принимает настройки в виде текстового конфигурационного файла, где описываются источники данных (ftrace, atrace, статистика процессов), размер буферов, триггеры старта и остановки записи. Конфиг передаётся командой вида: adb shell perfetto --config - -o /data/misc/perfetto-traces/trace.pftrace < config.pbtx. Такой подход позволяет, например, записывать только моменты, когда конкретное приложение выходит на передний план.
Анализ записанного файла
Готовый trace-файл открывается в веб-интерфейсе Perfetto UI — это официальный визуализатор, работающий прямо в браузере без установки программ. Файл загружается локально и не отправляется на сервер, что важно, если в трассировке есть чувствительные данные о процессах.
Интерфейс показывает временную шкалу с дорожками: активность каждого ядра CPU, состояние потоков, события рендеринга, системные маркеры. Ключевой признак фриза интерфейса — поток UI приложения в состоянии «Runnable» или «Sleeping» в момент, когда должен выполняться рендеринг кадра: значит, поток ждёт ресурс или заблокирован длительной операцией.
Для старых файлов формата Systrace логика анализа аналогична, но сам инструмент считается устаревшим — современные версии Android записывают именно формат Perfetto. Если вам прислали trace от пользователя, сначала уточните версию его ОС, чтобы корректно интерпретировать набор категорий.
Типичные проблемы и их решение
Не всегда запись проходит гладко. Разберём частые затруднения, с которыми сталкиваются при настройке трассировки.
Пункт System Tracing отсутствует в меню разработчика. Возможная причина — производитель вырезал инструмент из оболочки. Проверьте наличие плитки через редактирование быстрых настроек; если её нет, используйте запись через ADB — она работает независимо от меню.
Файл получается пустым или обрывается. Частая причина — недостаточный размер буфера при большом количестве категорий. Уменьшите набор событий или увеличьте буфер в настройках. Также проверьте свободное место в хранилище: длинная запись с широким набором категорий может занимать заметный объём.
⚠️ Внимание: не записывайте трассировку во время ввода паролей или работы с банковскими приложениями. В зависимости от категорий в файл могут попасть имена процессов и фрагменты системных событий, которые не стоит передавать третьим лицам без необходимости.
Trace не открывается в визуализаторе. Убедитесь, что файл скачан полностью — обрыв при передаче через мессенджеры встречается нередко. Попробуйте переслать файл архивом или через облачное хранилище.
Как добавить свои маркеры в трассировку
Разработчики могут вставлять собственные события в trace через класс Trace (android.os.Trace) — вызовы beginSection и endSection помечают участки кода, и эти метки появятся на временной шкале рядом с системными событиями. Для этого в категориях записи должен быть включён источник atrace, а приложение собрано с отладочными правами или запущено на профилируемой сборке.
Часто задаваемые вопросы
Влияет ли запись трассировки на производительность устройства?
Влияние есть, но при умеренном наборе категорий оно небольшое — Perfetto спроектирован для записи на живых устройствах. Однако включение всех категорий сразу может ощутимо нагрузить систему и исказить картину, которую вы пытаетесь зафиксировать.
Нужен ли root-доступ для системной трассировки?
Нет, базовая запись через меню разработчика или ADB работает без root. Расширенные источники данных, например детальный ftrace по отдельным событиям ядра, могут требовать дополнительных привилегий — это зависит от версии Android и прошивки.
Как долго можно записывать трассировку?
Длительность ограничена размером буфера и свободным местом. Для диагностики фризов обычно хватает 10–30 секунд записи вокруг проблемного момента. Длинные сессии настраиваются через конфиг Perfetto с кольцевым буфером.
Чем трассировка отличается от обычного лога logcat?
Logcat фиксирует текстовые сообщения приложений и системы, а трассировка — точные временные события планировщика, потоков и рендеринга. Для анализа производительности trace информативнее, для поиска ошибок и исключений — logcat.
Можно ли открыть trace-файл без интернета?
Да. Визуализатор Perfetto UI после первой загрузки страницы обрабатывает файл локально в браузере. Существуют также инструменты командной строки из состава Perfetto для конвертации и анализа без браузера.