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

    文章

    10990

    浏览量

    206738
  • 宏定义
    +关注

    关注

    0

    文章

    48

    浏览量

    8927
收藏 人收藏

    评论

    相关推荐

    C语言定义技巧

    C语言定义技巧
    发表于 03-01 21:58

    C语言定义中#和##的作用

    本文由dongeasy收集整理,原文链接:http://www.dongeasy.com/software-development/embedded-system/2013.html在定义
    发表于 08-23 18:22

    定义问题!

    各位,请问一下,这个定义代表什么意思?#define OUTPUT_WAVE(pointer, d)PORTC = pointer[d*N_PORTS + 0] 谢谢
    发表于 03-12 10:30

    有关于定义的问题,涉及##和#

    想通过定义来实现,如下面格式#define link(arg) RCC_APB2Periph_##arg返回的结果为RCC_APB2Periph_GPIOC,以方便在时钟使能函数中使用请教该怎么实现——来自
    发表于 04-20 23:33

    请问FLASH 的定义是如何定义的?为什么?

    ,"ramfuncs");#pragma CODE_SECTION(OffsetISR,"ramfuncs");#endif但是这个FLASH 的定义不知在哪里进行
    发表于 06-11 07:42

    扩展问题

    MPLAB IDIDV3.65和XC8HI,“扩展工具”是一个方便的工具来查看在项目文件中的扩展(右键单击并选择导航/视图
    发表于 04-14 09:57

    ucgui配置选项定义要在哪里定义啊?

    )颜色。SCROLLBAR_COLOR0_DEFAUL 0xc0c0c0箭头按钮的颜色。SCROLLBAR_USE_3D1启用 3D 支持。如图,类似这些定义要在哪里定义啊?是guiconf.h吗?
    发表于 05-01 04:36

    定义的理解

    工程目标:实现按键长按,短按,双击,单机调用不同的回调函数,执行不同的命令。定义:#define TRIGGER_CB(event)\if(btn->CallBack_Function
    发表于 01-05 06:58

    CSU_IDE工具中的#ifdef 定义差异显示怎么设置开启

    CSU_IDE工具中的#ifdef 定义差异显示怎么设置开启?
    发表于 03-20 19:26

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

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

    Linux内核ftrace的学习

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

    使用Ftrace研究Linux内核

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

    Ftrace使用tracefs文件系统保存控制文件

    FtraceLinux Kernel的官方tracing系统,支持Function trace、静态tracepoint、动态Tracepoint的跟踪,还提供各种Tracer,用于统计最大irq延迟、最大函数调用栈大小、调度事件等。
    的头像 发表于 02-22 14:34 869次阅读

    Linux ftrace简介与分析

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

    linux镜像制作工具

    定义的虚拟机镜像。下面将介绍几种常用的Linux镜像制作工具,并详细解释它们的特点和使用方法。 一、Debian Live-build Debian Live-build是Debian发行版提供的一种快速构建自
    的头像 发表于 11-23 09:56 820次阅读