CONFIG_HAVE_FTRACE_NMI_ENTER=y # 表示内核支持非屏蔽中断(NMI)时进入 Ftrace 的功能 CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y # 表示内核支持通过 mcount 记录函数调用关系。 CONFIG_FTRACE_NMI_ENTER=y # 表示内核支持通过 mcount 记录函数调用关系。 CONFIG_FTRACE_SYSCALLS=y # 系统调用的追踪 CONFIG_FTRACE_M...
如果ftrace使能了某些跟踪器,ftrace_trace_function指针不再指向ftrace_stub,而是指向具体的跟踪函数 否则就执行到体系结构相关的ftrace_stub从函数返回,而该接口为空函数 也就是说开启ftrace调用函数时,都会先调用_mcount,总是至少会执行两条指令,即使ftrace_trace_function没有被指向某个跟踪函数。 2.1.2 动态插桩 s...
mcount函数本身只是一个简单的返回指令,并没有什么实际意义,但动态ftrace框架会在启动时将所有对mcount的调用位置都填充为nop指令,这样一来就在这些内核函数的开头产生了足以容纳一个call指令的空白区。这个空白区可以在需要的时候被替换为对ftrace相关函数的调用,从而实现对特定内核函数的调用追踪,而不会过度影响其它内...
set_ftrace_filter/set_graph_notrace:(function跟踪器)函数过滤器,echo xxx设置要跟踪的函数, root@100ask:/sys/kernel/debug/tracing# cat set_ftrace_filter all functions enabled trace数据读取 trace:可以cat读取跟踪记录的buffer内容(查看的时候会临时停止跟踪) trace_pipe:类似trace可以动态读取的流媒体文件(...
Ftrace使能: ftrace的位置一般位于/sys/kernel/debug/tracing/或者/sys/kernel/tracing. Ftrace依赖内核开关使能: CONFIG_FUNCTION_TRACER CONFIG_FUNCTION_GRAPH_TRACER CONFIG_STACK_TRACER CONFIG_DYNAMIC_FTRACE ftrace是依赖于debugfs,也就是说它的使用与tracing/下各个文件关联。
1.进入 ftrace 工作目录:cd/sys/kernel/debug/tracing 2.查看系统支持的 tracer 类型:catavailable_tracers hwlat blk mmiotrace function_graph wakeup_dl wakeup_rt wakeupfunctionnop 3.关闭 tracerecho0 > tracing_on 4.设置 tracer 类型为functionechofunction> current_tracer ...
常用的ftrace跟踪器如下。 nop:不跟踪任何信息。将nop写入current_tracer文件可以清空之前收集到的跟踪信息。 function:跟踪内核函数执行情况。 function_graph:可以显示类似C语言的函数调用关系图,比较直观。 wakeup:跟踪进程唤醒信息。 irqsoff:跟踪关闭中断信息,并记录关闭的最大时长。
一、ftrace介绍 本文基于Rockpi 4A单板Linux 4.4内核介绍ftrace的使用方法,其它内核版本的ftrace使用方法类似。 ftrace(Function Tracer)是直接内置在Linux内核的跟踪程序,作为一个内部的tracer提供给系统的开发者和设计者,帮他们弄清内核正在发生的行为,用于调试或分析用户空间之外的延迟和性能问题。
我们可以将ftrace理解为Function tracer的简称,可以看出其基本功能是实现函数调用的跟踪。其实ftrace不仅仅用于进行函数调用的跟踪,其它很多内核信息都可以通过该工具进行跟踪。 除了上面函数调用跟踪外,ftrace 还能帮我们分析内核特定的事件,比如调度,中断等;它还能帮我们去追踪延迟,比如中断被屏蔽,抢占被禁止的时间,以及唤...
如果你只是需要快速使用工具来进行问题排查,包括但不限于函数调用栈跟踪、函数调用子函数流程、函数参数、函数返回结果,那么推荐你直接使用 BCC trace 或 Brendan Gregg 封装的 perf-tools 工具即可,本文尝试从手工操作 Ftrace 跟踪工具的方式展示在底层是如何通过 tracefs 实现这些能力的。如果你对某个跟踪主题感兴趣,...