ftrace

  • function_graph跟踪器 的 config 配置
$ git show e93ae8919ebde855a16d9f02f2fb1fe59f1b33a9
commit e93ae8919ebde855a16d9f02f2fb1fe59f1b33a9
Author: lisider <1368317399@qq.com>
Date:   Thu Jan 10 08:26:37 2019 -0800

    添加 ftrace 到 config

diff --git a/arch/arm/configs/vexpress_defconfig b/arch/arm/configs/vexpress_defconfig
index ad4b1a7..8b6082b 100644
--- a/arch/arm/configs/vexpress_defconfig
+++ b/arch/arm/configs/vexpress_defconfig
@@ -161,3 +161,7 @@ CONFIG_DEBUG_USER=y
 # CONFIG_CRYPTO_HW is not set
 CONFIG_NODE_PLATFORM=y
 CONFIG_NODE_I2C=y
+CONFIG_FTRACE=y  									// 打开了 ftrace ,是其他配置的基础
+CONFIG_FUNCTION_TRACER=y							// 打开了 ftrace 中的 function跟踪器
+CONFIG_FUNCTION_GRAPH_TRACER=y						// 打开了 ftrace 中的 function_graph跟踪器
+CONFIG_DYNAMIC_FTRACE=y							// 打开了 动态ftrace 功能,可以设置需要跟踪的函数,不要跟踪的函数
  • demo

  • function 跟踪器


function 跟踪器和 events 跟踪的设置 是比较复杂的



包括 events  和 其他所有跟踪器都用 tracing_on 来开关。
echo function > current_tracer
echo 8899 > set_ftrace_pid // 设置跟踪的pid  // 这是 CONFIG_FUNCTION_TRACER 支持的 
echo func_object > set_ftrace_filter // 设置跟踪的函数 // 这是 CONFIG_DYNAMIC_FTRACE 支持的
echo 1 > tracing_on
。。。 等一会
echo 0 > tracing_on
cat trace
  • event 跟踪
events 不属于跟踪器,不用设置 current_tracer ,其他 包括function 的 跟踪器都需要设置current_tracer 
echo xxx > set_event
echo 1 > tracing_on
cat trace
  • 其他跟踪器

其他的跟踪器的设置都很简单(只需要设置 current_tracer为当前跟踪器,然后 echo 1 > tracing_on,过一段时间操作之后,echo 0 > tracing_on ,cat trace)

你可能感兴趣的:(linux-debug)