kernel配置中需要打开如下宏
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
实例:跟踪tracer function,跟踪函数wake_up_q,如下:
adb wait-for-device root
adb wait-for-device shell "mount -t debugfs nodev /sys/kernel/tracing/"
adb shell "echo function > /sys/kernel/tracing/tracing/current_tracer"
adb shell "cat /sys/kernel/tracing/tracing/current_tracer"
adb shell "echo wake_up_q > /sys/kernel/tracing/tracing/set_ftrace_filter"
adb shell "cat /sys/kernel/tracing/tracing/set_ftrace_filter"
adb shell "echo 0 > /sys/kernel/tracing/tracing/tracing_on && echo 0 > /sys/kernel/tracing/tracing/trace"
adb shell "echo 1 > /sys/kernel/tracing/tracing/tracing_on && sleep 10 && echo 0 > /sys/kernel/tracing/tracing/tracing_on "
adb shell "cat /sys/kernel/tracing/tracing/trace" > wake_up_q.txt