ftrace 使用示例

2021-10-24 23:11:58 字數 1826 閱讀 8607

1.make menuconfig->kernel hacking>tracers>kernel function tracer …

2.user manual

example:

if i am only interested in sys_nanosleep and hrtimer_interrupt:

# echo sys_nanosleep hrtimer_interrupt

> set_ftrace_filter

# echo function > current_tracer

# echo 1 > tracing_on

# usleep 1

# echo 0 > tracing_om

# cat trace

3.how to use trace

開啟 echo 1 > events/musb/musb_isr/enable

檢視 cat trace

4.實現原理與過程

trace_point

step1,declare_trace(name, proto, args)

step2,define_trace(name)

step3,**中使用trace_##name,假設step1,2中的name為「musb_log」,則呼叫trace_musb_log

event trace

trace_event(name, proto, args, struct, assign, print)

5.實現原理與過程(英文)

在trace_event(name, proto, args, struct, assign, print)中,

name,args,struct用於描述用於打樁的函式格式,舉例如下

trace_event(musb_log,

tp_proto(struct musb *musb, struct va_format *vaf),

tp_args(musb, vaf),

tp_struct__entry(

__string(name, dev_name(musb->controller))

__dynamic_array(char, msg, musb_msg_max)

),tp_fast_assign(

__assign_str(name, dev_name(musb->controller));

vsnprintf(__get_str(msg), musb_msg_max, vaf->fmt, *vaf->va);

),tp_printk("%s: %s", __get_str(name), __get_str(msg))

);**中,通過呼叫下面的musb_dbg,來間接呼叫trace_musb_log(musb, &vaf);

void musb_dbg(struct musb *musb, const char *fmt, …)

struct,一般通過tp_struct__entry定義,用於描述儲存在trace ring buffer中的資料結構

assign,通過tp_fast_assign定義,struct中的資料結構成員如何賦值(使用args)

print,通過tp_printk定義,真正寫入ring buffer的動作

6.使用之個人建議

還沒有沒有寫過模組的trace event,之前除錯列印一直用的printk串列埠列印,接觸到musb驅動,才知道ftrace,個人覺得ring buffer機制實時性會比較好些,畢竟外設列印需要很長時間(相比於寫buff檔案),如果要在新的驅動模組新增trace,建議參考下kernel驅動中現有的模組trace,依葫蘆畫瓢,因為還有些細節的巨集預定義等等

使用 ftrace 除錯 Linux 核心

ftrace 是內置於 linux 核心的跟蹤工具,從 2.6.27 開始加入主流核心。使用 ftrace 可以除錯或者分析核心中發生的事情。ftrace 提供了不同的 以用於不同的場合,比如跟蹤核心函式呼叫 對上下文切換進行跟蹤 檢視中斷被關閉的時長 跟蹤核心態中的延遲以及效能問題等。系統開 發人...

使用 ftrace 除錯 Linux 核心

ftrace 是內置於 linux 核心的跟蹤工具,從 2.6.27 開始加入主流核心。使用 ftrace 可以除錯或者分析核心中發生的事情。ftrace 提供了不同的 以用於不同的場合,比如跟蹤核心函式呼叫 對上下文切換進行跟蹤 檢視中斷被關閉的時長 跟蹤核心態中的延遲以及效能問題等。系統開 發人...

使用 ftrace 除錯 Linux 核心

ftrace 是內置於 linux 核心的跟蹤工具,從 2.6.27 開始加入主流核心。使用 ftrace 可以除錯或者分析核心中發生的事情。ftrace 提供了不同的 以用於不同的場合,比如跟蹤核心函式呼叫 對上下文切換進行跟蹤 檢視中斷被關閉的時長 跟蹤核心態中的延遲以及效能問題等。系統開 發人...