2

我正在尝试使用 FTRACE 在可加载的驱动程序模块上跟踪和获取 function_graph。
但是,不知何故,我没有看到该模块中的任何函数被跟踪。

这就是我所做的(我将内核配置为在 menuconfig 中已经有 FTRACE)

#echo function_graph > /sys/kernel/debug/tracing/current_tracer
#cat /sys/kernel/debug/tracing/current_tracer
function_graph
#echo 1 > tracing_on
#insmod my_module.ko
#echo 0 > tracing_on
#cat trace

跟踪文件中的任何内容都没有 my_module.ko 中的任何函数

编译 my_module.c 时是否需要启用一些编译器标志?有什么想法我需要做什么吗?

谢谢!

4

2 回答 2

1

我怀疑您根本看不到任何功能被跟踪;通常动态 ftrace 是启用的,因此您必须手动选择要跟踪的内容。

cat available_filter_functions

它向您展示了您可以跟踪的所有功能(grep 查找您想要的内容,以确保其存在)。当然,您的模块功能只有在模块加载后才可见。因此,您加载模块,然后添加您的功能。

insmod mymodule.ko
echo my_function >> set_ftrace_filter

您可以在内核文档中找到有关ftrace的所有详细信息

于 2015-04-01T20:41:26.577 回答
0

试试这个命令:

echo $$ >> /sys/kernel/debug/tracing/set_ftrace_pid
于 2016-06-17T05:29:55.960 回答