Linux 系统中的事件跟踪工具详解
1. 事件跟踪概述
目前所见的工具多采用统计采样,但我们往往希望深入了解事件的顺序及其相互关系。函数跟踪通过在代码中设置跟踪点来捕获事件信息,可能涵盖以下部分或全部内容:
- 时间戳
- 上下文(如当前 PID)
- 函数参数和返回值
- 调用栈
函数跟踪比统计分析更具侵入性,会产生大量数据。不过,在采样和查看跟踪信息时应用过滤器,可缓解这一问题。本文将介绍两种跟踪工具:内核函数跟踪器 Ftrace 和 LTTng。
2. Ftrace 介绍
Ftrace 是一款内核函数跟踪器,源于 Steven Rostedt 等人对实时应用中高调度延迟原因的追踪工作。它在 Linux 2.6.27 版本中首次出现,此后不断发展。内核源码的 Documentation/trace 目录中有许多关于内核跟踪的文档。
Ftrace 包含多个跟踪器,可记录内核中各种类型的活动。这里主要介绍函数跟踪器、函数图跟踪器和事件跟踪点。
- 函数跟踪器 :对每个内核函数进行插桩,记录函数调用并添加时间戳。它使用 -pg 开关编译内核以注入插桩代码,但与 gprof 的相似之处仅此而已。
- 函数图跟踪器 :不仅记录函数的进入,还记录函数的退出,从而创建调用图。
- 事件跟踪点 :记录与调用相关的参数。
Ftrace 具有非常适合嵌入式系统的用户界面,完全通过 debugfs
超级会员免费看
订阅专栏 解锁全文
2万+

被折叠的 条评论
为什么被折叠?



