8
24
新手上路
Ftrace一旦使能,对kernel中所有的函数插桩,这带来的性能开销是惊人的,有可能导致人们弃用Ftrace功能。
这里的动态,是指的动态修改函数指令。
上面只是介绍了部分配置,更多详细配置可自行了解。 并且上述配置不一定全部打开,勾选自己需要的即可,通常我们选择CONFIG_FUNCTION_TRACER和CONFIG_HAVE_FUNCTION_GRAPH_TRACER即可,然后编译烧录到开发板。
万变不离其宗,如此复杂的框架,设计人员已经提供了README文件,里面详解了各个属性文件的含义,我建议抛弃本文,看README吧:)
简单的来说,cat trace_pipe是堵塞读取,有数据就读,没数据就等待;而cat trace有没有数据都是直接返回的
追踪使用 ring buffer 记录追踪数据。修改 tracing_on 不会影响 ring buffer 当前记录的内容。
如有 128 个 CPU buffer ,每个大小 7KB,则 buffer_total_size_kb 记录的总大小为 128 * 7KB = 896。
官方给的示例:
更多干货可见:高级工程师聚集地,助力大家更上一层楼!
一般我们挂载上debugfs后,tracing_on是处于打开状态的。
如何追踪我们执行的命令呢?
为什么要写成一条语句?
追踪ext3模块内的所有函数
如果该模块内的函数,命名都有一定的规则,可以按照正则表达式来过滤
过滤包含mmc字符的所有函数
PS:自动化脚本获取:公~号【嵌入式艺术】
脚本除了command功能外,其他功能都需要手动调用common_trace.sh clear来停止追踪。
上一篇: Linux 中常用的基础命令
下一篇: awk数组使用
举报 回复 使用道具 分享