Как получить полный граф вызовов, начиная с определенной функции в ftrace в Linux?

Я хочу отследить конкретную функцию с помощью ftrace, но со всеми последующими вызовами из этой функции.

Мне удалось запустить ftrace с фильтром для моей желаемой функции, но теперь она показывает только эту конкретную вызванную функцию.

Поэтому мой вопрос: как распечатать все функции, вызываемые из определенной функции, функции, вызываемые этими функциями, и так далее?

2 ответа

Решение

Я был в состоянии решить проблему. Вот решение с kmalloc в качестве примера.

cd /sys/kernel/debug/tracing
echo kmalloc > set_graph_function
echo function_graph > current_tracer
cat trace

Обязательно сбросьте все фильтры (например, set_ftrace_filter) перед использованием function_graph.

Вы также можете установить max_graph_depth и получить большую глубину графика функции.

Следующие шаги помогут в создании графика функции выбранной функции Linux.

1. cd /sys/kernel/debug/tracing
2. cat /dev/null >  trace
3. echo generic_make_request > set_graph_function
4. echo 10 > max_graph_depth
5. echo function_graph > current_tracer
6. echo 1 > tracing_on
7. dd if=/dev/sddk of=~/test bs=512 count=5
8. cp trace ~/dd_trace_depth10
9. echo 0 > tracing_on
10. echo > set_graph_function
11. echo 0 > max_graph_depth
12. cat /dev/null >  trace

Включить трассировку: в этом примере я выбрал функцию фильтра как "generic_make_request". Таким образом, шаг 3 устанавливает графическую функцию на linux-функцию "generic_make_request". Затем на шаге 4 мы установили глубину графика равной 10. Шаг 5 устанавливает текущий трассер как "function_graph". После того, как все это установлено, мы включаем трассировку.

Действие: Теперь мы выполняем действие, для которого мы хотели трассировку Linux. В этом примере мы выполняем ввод-вывод с помощью команды dd. Эта команда попадет в функцию generic_make_request, и файл /sys/kernel/debug/tracing/trace будет заполнен графиком функции.

Отключить трассировку: шаги 9, 10, 11 отключат трассировку

См. http://sklinuxblog.blogspot.in/2014_12_01_archive.html

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