将FTRACE用于可加载的Linux驱动程序模块

时间:2015-04-01 18:23:49

标签: linux-kernel linux-device-driver embedded-linux ftrace

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

这是我做的(我已将内核配置为在菜单配置中已经有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时是否需要启用一些编译器标志? 任何想法我需要做什么?

谢谢!

2 个答案:

答案 0 :(得分:0)

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

cat available_filter_functions

它显示了您可以跟踪的所有功能(grep用于您想要的确保它就在那里)。当然,只有在加载模块后才能看到模块的功能。所以你加载模块然后你添加你的功能。

insmod mymodule.ko
echo my_function >> set_ftrace_filter

您可以在内核文档中找到有关ftrace

的所有详细信息

答案 1 :(得分:0)

尝试此命令:

echo $$ >> /sys/kernel/debug/tracing/set_ftrace_pid