Linux ftrace工具宏定义

描述

宏定义

在使用 ftrace 之前,需要确保内核配置编译了其配置选项。

CONFIG_FTRACE=y
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_FUNCTION_TRACER=Y
CONFIG_IRQSOFF_TRACER=y
CONFIG_SCHED_TRACER=y
CONFIG_ENABLE_DEFAULT_TRACERS=y
CONFIG_FTRACE_SYSCALLS=y
CONFIG_PREEMPT_TRACER=y

而后在 /sys/kernel/debug/trace 目录下提供了各种跟踪器(tracer)和 event 事件,一些常用的选项如下。

available_tracers:列出当前系统支持的跟踪器。

available_events:列出当前系统支持的 event 事件。

current_tracer:设置和显示当前正在使用的跟踪器。使用 echo 命令可以把跟踪器的名字写入该文件,即可以切换不同的跟踪器。默认为
nop,即不做任何跟踪操作。

trace:读取跟踪信息。通过 cat 命令查看 ftrace 记录下来的跟踪信息。

tracing_on:用于开始或暂停跟踪。

trace_options:设置 ftrace 的一些相关选项。

ftrace 当前包含多个跟踪器,很方便用户用来跟踪不同类型的信息,例如进程睡眠唤醒、抢占延迟的信息。查看 available_tracers
可以知道当前系统支持哪些跟踪器,如果系统支持的跟踪器上没有用户想要的,那就必须在配置内核时自行打开,然后重新编译内核。常用的 ftrace 跟踪器如下。

nop:不跟踪任何信息。将 nop 写入 current_tracer 文件可以清空之前收集到的跟踪信息。

function:跟踪内核函数执行情况。

function_graph:可以显示类似 C 语言的函数调用关系图,比较直观。

wakeup:跟踪进程唤醒信息。

irqsoff:跟踪关闭中断信息,并记录关闭的最大时长。

preemptoff:跟踪关闭禁止抢占信息,并记录关闭的最大时长。

preemptirqsoff:综合了 irqoff 和 preemptoff 两个功能。

sched_switch:对内核中的进程调度活动进行跟踪。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分