1、Ftrace原理和代码分析:
1.1、ring buffer
1.2、trace event
1.3、tracer (function、function_graph、irq_off)
1.4、kprobe event
1.5、syscall event
2、Ftrace的使用指南:
2.1、ftrace的使用
2.2、trace event的使用
2.3、kprobe event的使用
2.4、uprobe event的使用
Ftrace从字面上理解=Function trace,但是发展到现在已经不仅仅是function trace而是一个大集合,鉴于其搭建的良好的框架(ringbuffer、tracefs…),各种trace纷纷投奔而来。现在大概分为两大类:tracer、event。
- tracer。发展出了function tracer、function_graph tracer、irqsoff tracer、preemptoff tracer、wakeup tracer等一系列tracer。
- event。也发展出trace event、kprobe event、uprobe event、syscall event等一系列的event。
trace采集数据的手段归根到底就两种:插桩、采样。ftrace是插桩法的集大成者,各种trace为了插桩使出了浑身解数给出了花样百变的插桩方法。
这里的Ftrace指的是,代码在”kernel/trace”目录下、操作路径在”/sys/kernel/debug/tracing”下的所有trace的集合。
本文如果不作说明,默认采用kernel 4.4的代码进行解析。