Инструмент 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?

Спасибо!


person Rodmar Conde    schedule 08.04.2013    source источник


Ответы (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 shell.

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

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

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

С уважением,

person Rodmar Conde    schedule 09.04.2013