Android-инструмент Systrace для внутреннего использования использует strace или ftrace?

Инструмент Systrace для Android внутренне вызывает инструмент под названием atrace, который является расширением ftrace или strace (инструменты Linux).

Если мы подключимся через консоль эмулятора (оболочка ADB) к Android Jelly Bean, мы сможем запустить инструмент strace, но не сможем запустить инструмент ftrace (команда не установлена).

Сделав некоторые исследования через Интернет, я обнаружил, что strace является предшественником ftrace: http://crtags.blogspot.de/2012/04/dtrace-ftrace-ltrace-strace-so-many-to.html

Что касается исходного кода Android, наиболее "внутренней" ссылкой, которую я нашел, является файл Trace.h: http://androidxref.com/4.1.1/xref/frameworks/native/include/utils/Trace.h

Я думаю, что этот файл затем разрешается в собственный драйвер Linux.

Однако я все еще не могу знать, принадлежит ли этот драйвер реализации strace или ftrace. "Обычно", это должно быть ftrace, потому что оно новее, но в этом случае я не знаю, почему мы не можем запустить ftrace из эмулятора. Напротив, strace полностью доступен из эмулятора.

Тогда, кто-то знает, использует ли инструмент Systrace Android очень низкоуровневый strace или ftrace?

Спасибо!

1 ответ

Решение

Я следую приведенным здесь инструкциям, связанным с ftrace: http://www.linuxforu.com/2010/11/kernel-tracing-with-ftrace-part-1/

Все работает отлично. Я не мог выполнить ftrace раньше, потому что взаимодействие и извлечение данных осуществляется по логическим путям.

Чтобы выполнить ftrace после правильной настройки (много шагов...) внутри оболочки adb:

root@android:# cat /sys/kernel/debug/tracing/trace > mytracefile.txt

atrace упрощает процесс настройки, поэтому мы можем получить доступ к информации о трассировке следующим образом:

root@android:# atrace -s -w -t 100 > mytracefile.txt

С другой стороны, я нашел информацию о выполнении strace здесь: http://www.hokstad.com/5-simple-ways-to-troubleshoot-using-strace

Все указанные примеры были успешно выполнены в моей среде с использованием оболочки adb.

Взаимодействие и доступ к результатам обоих инструментов очень разные.

Теперь я могу сказать, что инструмент Systrace для Android основан на Atrace, который, в свою очередь, основан на ftrace.

strace также поддерживается, но служит для других целей и не связан с systrace.

С Уважением,

Другие вопросы по тегам