0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux ftrace工具宏定義

麥辣雞腿堡 ? 來源:嵌入式Linux系統(tǒng)開發(fā) ? 作者:嵌入式Linux系統(tǒng)開 ? 2023-07-20 11:18 ? 次閱讀

宏定義

在使用 ftrace 之前,需要確保內(nèi)核配置編譯了其配置選項。

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:列出當(dāng)前系統(tǒng)支持的跟蹤器。

available_events:列出當(dāng)前系統(tǒng)支持的 event 事件。

current_tracer:設(shè)置和顯示當(dāng)前正在使用的跟蹤器。使用 echo 命令可以把跟蹤器的名字寫入該文件,即可以切換不同的跟蹤器。默認(rèn)為
nop,即不做任何跟蹤操作。

trace:讀取跟蹤信息。通過 cat 命令查看 ftrace 記錄下來的跟蹤信息。

tracing_on:用于開始或暫停跟蹤。

trace_options:設(shè)置 ftrace 的一些相關(guān)選項。

ftrace 當(dāng)前包含多個跟蹤器,很方便用戶用來跟蹤不同類型的信息,例如進程睡眠喚醒、搶占延遲的信息。查看 available_tracers
可以知道當(dāng)前系統(tǒng)支持哪些跟蹤器,如果系統(tǒng)支持的跟蹤器上沒有用戶想要的,那就必須在配置內(nèi)核時自行打開,然后重新編譯內(nèi)核。常用的 ftrace 跟蹤器如下。

nop:不跟蹤任何信息。將 nop 寫入 current_tracer 文件可以清空之前收集到的跟蹤信息。

function:跟蹤內(nèi)核函數(shù)執(zhí)行情況。

function_graph:可以顯示類似 C 語言的函數(shù)調(diào)用關(guān)系圖,比較直觀。

wakeup:跟蹤進程喚醒信息。

irqsoff:跟蹤關(guān)閉中斷信息,并記錄關(guān)閉的最大時長。

preemptoff:跟蹤關(guān)閉禁止搶占信息,并記錄關(guān)閉的最大時長。

preemptirqsoff:綜合了 irqoff 和 preemptoff 兩個功能。

sched_switch:對內(nèi)核中的進程調(diào)度活動進行跟蹤。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207919
  • 宏定義
    +關(guān)注

    關(guān)注

    0

    文章

    48

    瀏覽量

    8956
收藏 人收藏

    評論

    相關(guān)推薦

    C語言定義使用技巧

    寫好C語言,漂亮的定義很重要,使用定義可以防止出錯,提高可移植性,可讀性,方便性等等。下面列舉一些成熟軟件中常用的
    發(fā)表于 07-29 09:35 ?1061次閱讀

    C語言定義使用技巧

    寫好C語言,漂亮的定義很重要,使用定義可以防止出錯,提高可移植性,可讀性,方便性 等等。下面列舉一些成熟軟件中常用得
    發(fā)表于 11-13 12:04 ?36次下載

    內(nèi)聯(lián)函數(shù)和定義的區(qū)別介紹

    定義是C語言提供的三種預(yù)處理功能的其中一種,這三種預(yù)處理包括:定義、文件包含、條件編譯。定義
    發(fā)表于 12-15 15:33 ?2302次閱讀
    內(nèi)聯(lián)函數(shù)和<b class='flag-5'>宏</b><b class='flag-5'>定義</b>的區(qū)別介紹

    基于linuxFtrace簡介、案例、結(jié)果讀法以及用vim進行Ftrace折疊的解析

    Ftrace簡介,Ftrace案例,Ftrace結(jié)果怎么讀, vim進行Ftrace折疊。
    的頭像 發(fā)表于 01-24 14:14 ?4228次閱讀
    基于<b class='flag-5'>linux</b>的<b class='flag-5'>Ftrace</b>簡介、案例、結(jié)果讀法以及用vim進行<b class='flag-5'>Ftrace</b>折疊的解析

    不帶參數(shù)的定義是什么?不帶參數(shù)的定義的資料介紹詳細(xì)過程概述

    c語言中有一個定義,其中有一類就是不帶參數(shù)的定義。 定義是C提供的三種預(yù)處理功能的其中一
    發(fā)表于 09-04 15:38 ?5次下載

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

    ARM Linux中一些重要的及地址定義
    的頭像 發(fā)表于 06-22 17:02 ?2638次閱讀

    Linux內(nèi)核ftrace的學(xué)習(xí)

    目錄 1. 前言 2. ARM64棧幀結(jié)構(gòu) 3. 編譯階段 3.1 未開啟ftrace時的blk_update_request 3.2 開啟ftrace時的blk_update_request 4.
    的頭像 發(fā)表于 08-13 17:33 ?3031次閱讀
    <b class='flag-5'>Linux</b>內(nèi)核<b class='flag-5'>ftrace</b>的學(xué)習(xí)

    對于定義與重復(fù)定義的問題

    對于定義與重復(fù)定義的問題
    發(fā)表于 11-29 18:21 ?1次下載
    對于<b class='flag-5'>宏</b><b class='flag-5'>定義</b>與重復(fù)<b class='flag-5'>定義</b>的問題

    使用Ftrace研究Linux內(nèi)核

    Ftrace通過tracefs文件系統(tǒng)的控制文件來進行調(diào)試。如果內(nèi)核構(gòu)建階段配置ftrace,默認(rèn)會掛載tracefs到/sys/kernel/tracing,也可以在運行環(huán)境手動掛載
    的頭像 發(fā)表于 05-05 10:00 ?1517次閱讀

    Linux內(nèi)核】從小小的定義窺探Linux內(nèi)核的精妙設(shè)計

    Linux內(nèi)核】從小小的定義窺探Linux內(nèi)核的精妙設(shè)計
    的頭像 發(fā)表于 08-31 13:30 ?1792次閱讀

    C語言中的定義

    #define命令是C語言中的一個定義命令,它用來將一個標(biāo)識符定義為一個字符串,該標(biāo)識符被稱為名,被定義的字符串稱為替換文本。命令有兩種
    的頭像 發(fā)表于 09-28 16:05 ?3299次閱讀
    C語言中的<b class='flag-5'>宏</b><b class='flag-5'>定義</b>

    Linux ftrace簡介與分析

    最近遇到 i2c 傳輸慢的問題,正常一筆 i2c 傳輸 52 bytes 應(yīng)該在 1ms 內(nèi)返回,但是偶爾出現(xiàn) 6 ~ 7ms 才返回,不滿足要求,因此研究一下 ftrace 工具,分析 i2c
    的頭像 發(fā)表于 07-20 11:17 ?743次閱讀

    c語言定義可以嵌套嗎?

    c語言定義可以嵌套嗎? C語言定義可以嵌套,也就是一個定義可以包含另一個
    的頭像 發(fā)表于 09-04 17:38 ?2951次閱讀

    c語言帶參數(shù)的定義

    c語言帶參數(shù)的定義? C語言定義是一種替換機制,它可以將一個標(biāo)識符替換為一個代碼片段。
    的頭像 發(fā)表于 09-04 17:45 ?2230次閱讀

    define定義

    define定義 以#號開頭的都是編譯預(yù)處理指令,它們不是C語言的成分,但是C程序離不開它們,#define用來定義一個,程序在預(yù)處理階段將用define
    的頭像 發(fā)表于 11-24 15:35 ?651次閱讀