2016-06-24 4 views
0

Я хочу трассировать perf_event_open с использованием ftrace, но это не отображается в available_filter_function. На самом деле, похоже, отображаются только функции, загруженные в модули.Сделать отображение функции ядра linux в ftrace available_filter_function

Есть ли черный список по умолчанию для немодульных функций? как добавить нужную мне функцию?

+0

Какова ваша дистрибутива ОС? Точное имя (версия) ядра linux (вывод 'uname -a') – osgx

ответ

1

Существует некоторая информация в «Тайнах функции индикаторного Ftrace» статьи, 20 января 2010 Стивен Rostedt: https://lwn.net/Articles/370423/

Список функций, которые могут быть добавлены к файлам фильтров показан в available_filter_functions файл. Этот список функций был получен из списка сохраненных ранее вызывавших абонентов mcount.

Набор функций, перечисленных в файле зависит от параметров ядра компиляции (пожалуйста, проверьте их в/загрузки/конфигурации * или в /proc/config.gz и добавить результат на вопрос):

CONFIG_FUNCTION_TRACER 
CONFIG_DYNAMIC_FTRACE 
CONFIG_FUNCTION_GRAPH_TRACER 

Существует более подробную информацию о mcount в предыдущей статье из серии: https://lwn.net/Articles/365835/ Отладка ядра с помощью Ftrace - часть 1, декабрь 2009, Стивен Rostedt:

Один из самых мощных трассеры Ftrace функция индикаторного. Он использует опцию -pg gcc, чтобы каждая функция в ядре вызывала специальную функцию «mcount()». Когда конфигурация CONFIG_DYNAMIC_FTRACE сконфигурирована, вызов преобразуется в NOP во время загрузки, чтобы система работала со скоростью 100%. Во время компиляции записываются сайты вызовов mcount().

Вы также можете проверить файлы в/sys/kernel/debug/tracing/events/syscalls/sys_enter_perf_event_open /?

системные вызовы доступны ftrace не как функции, но, как события (например, из opensourceforu.com/2010/12/kernel-tracing-with-ftrace-part-2/):

trace-cmd record -e syscalls ls ##Initiate tracing on the syscall 'ls' 
##(A file called trace.dat gets created in the current directory.) 
trace-cmd report     ## displays the report from trace.dat 

Для меня trace-cmd record -e syscalls perf stat ls -d . ловит призывы к perf_event_open.