0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux ftrace工具宏定义

麦辣鸡腿堡 来源:嵌入式Linux系统开发 作者:嵌入式Linux系统开 2023-07-20 11:18 次阅读

宏定义

在使用 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:对内核中的进程调度活动进行跟踪。

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

    关注

    87

    文章

    11273

    浏览量

    209263
  • 宏定义
    +关注

    关注

    0

    文章

    50

    浏览量

    9003
收藏 人收藏

    评论

    相关推荐

    C语言定义使用技巧

    写好C语言,漂亮的定义很重要,使用定义可以防止出错,提高可移植性,可读性,方便性等等。下面列举一些成熟软件中常用的
    发表于 07-29 09:35 1109次阅读

    C语言定义使用技巧

    写好C语言,漂亮的定义很重要,使用定义可以防止出错,提高可移植性,可读性,方便性 等等。下面列举一些成熟软件中常用得
    发表于 11-13 12:04 36次下载

    内联函数和定义的区别介绍

    定义是C语言提供的三种预处理功能的其中一种,这三种预处理包括:定义、文件包含、条件编译。定义
    发表于 12-15 15:33 2338次阅读
    内联函数和<b class='flag-5'>宏</b><b class='flag-5'>定义</b>的区别介绍

    基于linuxFtrace简介、案例、结果读法以及用vim进行Ftrace折叠的解析

    Ftrace简介,Ftrace案例,Ftrace结果怎么读, vim进行Ftrace折叠。
    的头像 发表于 01-24 14:14 4339次阅读
    基于<b class='flag-5'>linux</b>的<b class='flag-5'>Ftrace</b>简介、案例、结果读法以及用vim进行<b class='flag-5'>Ftrace</b>折叠的解析

    不带参数的定义是什么?不带参数的定义的资料介绍详细过程概述

    c语言中有一个定义,其中有一类就是不带参数的定义定义是C提供的三种预处理功能的其中一
    发表于 09-04 15:38 5次下载

    ARM Linux中一些重要的及地址定义

    ARM Linux中一些重要的及地址定义
    的头像 发表于 06-22 17:02 2714次阅读

    Linux内核ftrace的学习

    目录 1. 前言 2. ARM64栈帧结构 3. 编译阶段 3.1 未开启ftrace时的blk_update_request 3.2 开启ftrace时的blk_update_request 4.
    的头像 发表于 08-13 17:33 3131次阅读
    <b class='flag-5'>Linux</b>内核<b class='flag-5'>ftrace</b>的学习

    对于定义与重复定义的问题

    对于定义与重复定义的问题
    发表于 11-29 18:21 1次下载
    对于<b class='flag-5'>宏</b><b class='flag-5'>定义</b>与重复<b class='flag-5'>定义</b>的问题

    使用Ftrace研究Linux内核

    Ftrace通过tracefs文件系统的控制文件来进行调试。如果内核构建阶段配置ftrace,默认会挂载tracefs到/sys/kernel/tracing,也可以在运行环境手动挂载
    的头像 发表于 05-05 10:00 1638次阅读

    Linux内核】从小小的定义窥探Linux内核的精妙设计

    Linux内核】从小小的定义窥探Linux内核的精妙设计
    的头像 发表于 08-31 13:30 1932次阅读

    C语言中的定义

    #define命令是C语言中的一个定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为名,被定义的字符串称为替换文本。命令有两种
    的头像 发表于 09-28 16:05 3438次阅读
    C语言中的<b class='flag-5'>宏</b><b class='flag-5'>定义</b>

    Linux ftrace简介与分析

    最近遇到 i2c 传输慢的问题,正常一笔 i2c 传输 52 bytes 应该在 1ms 内返回,但是偶尔出现 6 ~ 7ms 才返回,不满足要求,因此研究一下 ftrace 工具,分析 i2c
    的头像 发表于 07-20 11:17 833次阅读

    c语言定义可以嵌套吗?

    c语言定义可以嵌套吗? C语言定义可以嵌套,也就是一个定义可以包含另一个
    的头像 发表于 09-04 17:38 3165次阅读

    c语言带参数的定义

    c语言带参数的定义  C语言定义是一种替换机制,它可以将一个标识符替换为一个代码片段。
    的头像 发表于 09-04 17:45 2392次阅读

    define定义

    define定义 以#号开头的都是编译预处理指令,它们不是C语言的成分,但是C程序离不开它们,#define用来定义一个,程序在预处理阶段将用define
    的头像 发表于 11-24 15:35 860次阅读