Linux ftrace基础入门教程:内核调试者的强大利器

支持作者新书,点击京东购买《Yocto项目实战教程:高效定制嵌入式Linux系统》

Linux ftrace基础入门教程:内核调试者的强大利器

本文面向所有 Linux 内核开发和高级调试需求者,不分平台,完全免依赖 Yocto 环境。内容包括 ftrace 基础概念,系统配置步骤,功能说明以及实际用途。


一、ftrace 是什么?

ftrace 是 Linux 内核内置的函数跟踪工具,主要用于观察内核中函数调用关系、异常跟踪、性能分析等内核调试操作,无需使用外部接口。

核心能力

  • 跟踪内核函数调用
  • 系统调用跟踪
  • 事件添载和输出
  • 虚拟监听点 (uprobe)
  • 时间分析 (latency)
  • 异常高调

根目录

ftrace 所有操作都通过 /sys/kernel/debug/tracing 操控,需要挂载 debugfs:

mount -t debugfs none /sys/kernel/debug

二、如何配置开启 ftrace

1.启用时机:内核配置 (menuconfig)

无论是自行编译内核还是 BSP 调试,都需要在 make menuconfig 中打开 ftrace 相关选项:
在这里插入图片描述

记住这 5 个最基本选项
功能menuconfig 位置CONFIG 对应
Kernel Function TracerKernel hacking > TracersCONFIG_FUNCTION_TRACER
Function Graph TracerTracers 子页CONFIG_FUNCTION_GRAPH_TRACER
Dynamic Ftrace同页CONFIG_DYNAMIC_FTRACE
Trace Syscalls同页CONFIG_FTRACE_SYSCALLS
Stack TraceGeneral setup > Stack traceCONFIG_STACKTRACE

配好后:

make -j$(nproc)

2.启动后验证

登入板子:

cat /sys/kernel/debug/tracing/available_tracers

如果看到 function / function_graph,表明已成功配置

三、ftrace 基础操作说明

跟踪一个内核函数

echo function > /sys/kernel/debug/tracing/current_tracer
echo your_function_name > /sys/kernel/debug/tracing/set_ftrace_filter
echo 1 > /sys/kernel/debug/tracing/tracing_on

然后执行对应操作,最后查看 trace:

cat /sys/kernel/debug/tracing/trace

关闭 trace

echo 0 > /sys/kernel/debug/tracing/tracing_on
echo nop > /sys/kernel/debug/tracing/current_tracer
echo > /sys/kernel/debug/tracing/set_ftrace_filter

限定 PID 跟踪 (advanced)

echo <pid> > /sys/kernel/debug/tracing/set_ftrace_pid

四、常用的 ftrace 文件

文件功能
current_tracer设置当前跟踪器(function,graph)
trace读取目前跟踪日志
set_ftrace_filter限定跟踪的函数名
set_ftrace_pid限定跟踪的进程 PID
tracing_on开/关 跟踪
available_tracers可用的 tracer 列表
available_filter_functions所有可跟踪函数

五、ftrace 合适场景

场景说明
验证 probe 函数是否执行如 I2C 设备是否被验证配置
调用成本跟踪解析哪个函数耗时最多
性能阅读配合 perf,给出点击时间
无 dmesg 日志高清细跟踪,不依赖 printk

六、推荐配置示例

当前最小配置,适用于与 perf 配合,或手动分析 probe:

[*] Kernel Function Tracer
[*] Kernel Function Graph Tracer
[*] enable/disable function tracing dynamically
[*] Trace syscalls
[*] Stack tracer

七、总结

ftrace 是高效、低负载、内核级利器,是需要进行性能调优、无日志错误分析、验证操作路径时的首选方案。

下一篇文章,我们将实战跟踪一个实际的 I2C EEPROM 设备,分析 driver probe 是否被命中,如何进行配置和调用,完全揭示调试思路。

支持作者新书,点击京东购买《Yocto项目实战教程:高效定制嵌入式Linux系统》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值