Проверка журналов трассировки с помощью Traceview

Traceview устарел. Если вы используете Android Studio 3.2 или более поздней версии, вместо этого вам следует использовать CPU Profiler для проверки файлов .trace , полученных путем оснащения вашего приложения классом Debug , записи трассировок новых методов, сохранения файлов .trace и проверки использования ЦП в реальном времени. процессы вашего приложения.

Traceview — это инструмент, обеспечивающий графическое представление журналов трассировки. Вы можете генерировать журналы, оснастив свой код классом Debug . Этот метод трассировки очень точен, поскольку вы можете точно указать, где в коде вы хотите начать и прекратить регистрацию данных трассировки. Если вы еще не создали эти журналы трассировки и не сохранили их с подключенного устройства на локальном компьютере, перейдите к разделу Создание журналов трассировки путем инструментирования вашего приложения . Проверка этих журналов с помощью Traceview поможет вам отладить приложение и профилировать его производительность.

Совет: Вы можете использовать dmtracedump из командной строки для создания графических диаграмм стека вызовов файлов журнала трассировки.

Если вам не нужно просматривать журналы трассировки, записанные вами путем оснащения вашего приложения классом Debug , вы можете использовать профилировщик ЦП, включенный в Android Studio 3.0 и более поздних версий, для проверки потоков вашего приложения и записи трассировок методов.

Откройте журнал трассировки с помощью Traceview.

Чтобы открыть журнал трассировки с помощью Traceview из Android Studio, выполните следующие действия:

  1. Запустите Монитор устройств Android .
  2. В мониторе устройств Android выберите «Файл» > «Открыть файл» .
  3. Перейдите к файлу .trace , который вы хотите проверить.
  4. Нажмите Открыть .

Примечание. Если вы пытаетесь просмотреть журналы трассировки приложения, созданного с включенным сжатием кода (например, сборка выпуска), некоторые имена методов и членов могут быть запутаны. Вы можете использовать файл mapping.txt ProGuard, чтобы определить исходные незашифрованные имена. Дополнительные сведения об этом файле см. в разделе Декодирование запутанной трассировки стека .

Примечание. Запуск traceview из командной строки устарел.

Обзор просмотра трассировки

После открытия журнала трассировки Traceview отображает данные журнала на следующих двух панелях:

В разделах ниже представлена ​​дополнительная информация о панелях вывода трассировки.

Панель временной шкалы

На рис. 1 показан крупный план панели временной шкалы. Выполнение каждого потока показано в отдельной строке, при этом затраченное время увеличивается вправо. Каждый метод показан разными цветами. Тонкие линии под первой строкой показывают дочерние элементы (от входа до выхода) выбранного метода.

Панель временной шкалы Traceview

Рисунок 1. Панель временной шкалы Traceview.

Панель профиля

Как показано на рисунке 2, на панели профиля представлен список каждого метода, выполненного системой за период журнала трассировки, а также время, затраченное на выполнение этих методов. Метод, вызывающий другой метод, называется родительским , а методы, вызываемые родительским методом, называются его дочерними элементами . Когда вы выбираете метод, щелкая по нему, его родительские и дочерние элементы отображаются в двух отдельных узлах.

Для каждого метода (узла верхнего уровня) в таблице показано как его включающее, так и исключительное время (в миллисекундах), а также процент от общего времени. Эксклюзивное время — это время, затраченное на выполнение собственного кода метода, а инклюзивное время — это время, затраченное на выполнение собственного кода метода, плюс время, затраченное на выполнение его дочерних элементов. Информация о времени также предоставляется в виде времени процессора и реального времени. Время ЦП учитывает только время, в течение которого поток активно использует время ЦП, а в реальном времени предоставляет абсолютную информацию о времени с момента входа вашего приложения в метод до момента выхода из этого метода — независимо от того, активен ли поток или находится в спящем режиме.

Для каждого узла верхнего уровня на панели профиля столбец «Вызовы + запись, вызовы/всего» в таблице (не показан на рис. 2) сообщает о количестве вызовов метода и количестве рекурсивных вызовов. Или, для родительских и дочерних методов, в этом столбце показано количество вызовов, в которых метод был дочерним или родительским по отношению к методу в узле верхнего уровня.

Панель профиля Traceview.

Рисунок 2. Панель профиля Traceview.

Отслеживание известных проблем

Ведение журнала Traceview плохо обрабатывает потоки, что приводит к следующим проблемам:

  • Если поток завершается во время профилирования, имя потока не создается (исправлено в Android 5.1 и более поздних версиях);
  • Виртуальная машина повторно использует идентификаторы потоков. Если поток останавливается и запускается другой, они могут получить один и тот же идентификатор.