Linux内核调试、跟踪与性能分析指南
1. 静态跟踪点(Static Tracepoints)
1.1 工作原理
静态跟踪点通过TRACE_EVENT宏插入。该宏在核源码中插入一个回调函数,该回调函数以跟踪点参数作为参数被调用。使用TRACE_EVENT宏添加的跟踪点允许ftrace或其他跟踪器使用它们。回调函数将跟踪信息插入到调用跟踪器的环形缓冲区中。
要在Linux内核中插入新的跟踪点,需要定义一个特殊格式的新头文件。默认情况下,跟踪点内核文件位于include/trace/events目录下,但内核支持将头文件放在不同路径,这在为内核模块定义跟踪点时很有用。
1.2 使用步骤
- 包含头文件:在插入跟踪点的任何文件中包含头文件,并在一个C文件中定义
CREATE_TRACE_POINT。 - 示例代码:以下是一个扩展
hello world内核模块以添加跟踪点的示例。meta-bsp-custom/recipes-kernel/hello-world-tracepoint/files/hello_world.c文件内容:
#include &l