tracer ftrace笔记(2)——添加与使用

 一、对于power相关的加trace

1. 在头文件trace/events/power.h中添加:

TRACE_EVENT(wakeup_reasons_tracer_test,
        TP_PROTO(const char *irq_name, int choose_flag),
        TP_ARGS(irq_name, choose_flag),
        TP_STRUCT__entry(
            __string(irq_name, irq_name)
            __field(int, choose_flag)
        ),
        TP_fast_assign(
            __assign_str(irq_name, irq_name);
            __entry->choose_flag = choose_flag;
        ),
        TP_printk("irq_name=%s choose_flag=%d",
              __get_str(irq_name),
              __entry->choose_flag
        )
);

2. 源文件中使用

(1)  包含头文件

#include <trace/events/power.h>

(2)  函数中使用

int wakeup_reasons_tracer_test(const char *irq_name, int choose_flag)
{
    ...
    trace_wakeup_reasons_tracer_test(irq_name, choose_flag)
    ...
}

(3)  打开抓这个trace

# echo wakeup_reasons_tracer_test > /sys/kernel/tracing/set_event
# > /sys/kernel/tracing/trace //清空缓存
# cat /sys/kernel/tracing/trace_pipe | grep wakeup_reasons_tracer_test //查看wakeup_reasons_tracer_test调用

Binder:702_2-7684  [006] ....  2365.019705: wakeup_reasons_tracer_test: irq_name=abort choose_flag=16384
Binder:702_2-7684  [000] d...  2366.087044: wakeup_reasons_tracer_test: irq_name=ccdetect-change choose_flag=248
Binder:702_2-7684  [000] dnh1  2366.087295: wakeup_reasons_tracer_test: irq_name=ccdetect-change choose_flag=3
      <idle>-0     [000] dnh1  2366.185204: wakeup_reasons_tracer_test: irq_name=alarm choose_flag=4

二、trace的filter功能

1.例子

# echo 1 > sched/sched_switch/enable
# echo "next_comm == xxx" > sched/sched_switch/filter  (filter 格式可以cat format 同目录下获得) TODO: 测试!

# echo 1 > sched/sched_wakeup/enable
# echo "next_comm == xxx" > sched/sched_wakeup/filter

# echo 1 > sched/sched_migrate/enable
# echo "next_comm == xxx" > sched/sched_migrate/filter

# echo 2048 > buffer_size_kb
# echo 1 > tracing_on
原文地址:https://www.cnblogs.com/hellokitty2/p/14165517.html