如何从Linux中的ftrace中的特定函数开始获取完整的调用图?

我想用ftrace跟踪特定的函数,但是需要来自该函数的所有进一步调用.

我已经设法在我想要的功能上使用过滤器启动ftrace,但现在它只显示了这个特定的函数.

所以我的问题是:如何打印从特定函数调用的所有函数,这些函数调用的函数,等等?

解决方法:

您还可以设置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将图形函数设置为“generic_make_request”linux函数.然后我们在步骤4中将图形深度设置为10.步骤5将当前跟踪器设置为“function_graph”.设置完所有这些后,我们启用跟踪.

行动:
现在我们执行我们想要linux跟踪的操作.在此示例中,我们使用dd命令执行I / O.此命令将命中generic_make_request函数,文件/ sys / kernel / debug / tracing / trace将填充函数图.

禁用跟踪:
步骤9,10,11将禁用跟踪

参见:http://sklinuxblog.blogspot.in/2014_12_01_archive.html

上一篇:如何使用ftrace跟踪系统调用事件而不显示Linux内核中的任何其他函数?


下一篇:vue学习笔记 八、toRef的使用