列出和使用自定义 Linux 内核跟踪点

Posted

技术标签:

【中文标题】列出和使用自定义 Linux 内核跟踪点【英文标题】:Listing and using custom Linux kernel tracepoints 【发布时间】:2020-12-31 13:22:00 【问题描述】:

我按照https://www.kernel.org/doc/Documentation/trace/tracepoints.txt 的教程在内核核心中创建了一个自定义跟踪点(即不在可加载模块中)。

但是,我没有看到perf listtplist(来自密件抄送工具)的输出中列出的跟踪点。

所以,我不知道如何使用跟踪点。

问题:如何使跟踪点出现在perf list/tplist 输出中?

谢谢。

【问题讨论】:

对于它的价值,来自 bcc 的tplist 通过列出/sys/kernel/debug/tracing/events/ 下可用的跟踪点来列出跟踪点,然后从它们的“格式”中读取一些信息(例如来自/sys/kernel/debug/tracing/events/tcp/tcp_probe/format,参见@987654322 @. 也许你没有提供tplist 可以用来转储跟踪点信息的格式信息?(不知道怎么做,看看我猜的其他跟踪点)。我没看perf做到了。 @Qeole 感谢您的洞察力!你是对的 - 我认为我没有为要列出的跟踪点提供足够的信息。因此,我按照问题链接中的说明在lwn.net/Articles/379903 使用TRACE_EVENT() 而不是DECLARE_TRACE()。这解决了我的问题:我可以在 perf listtplist 输出中看到跟踪点。 酷,很高兴我能帮上忙!您应该将此作为答案并接受它。 【参考方案1】:

我通过使用TRACE_EVENT() 宏(请参阅this LWN article 中的详细信息)而不是DECLARE_TRACE() 解决了这个问题。我现在可以在 perf listtplist 输出中看到跟踪点。

感谢@Qeole 的洞察力促成了解决方案。

【讨论】:

以上是关于列出和使用自定义 Linux 内核跟踪点的主要内容,如果未能解决你的问题,请参考以下文章

如何为其模型中文本的不同代码点自定义Java 9+ JTextField的视图?

使用 Nsight Systems 跟踪自定义 CUDA 内核

共享点自定义智能部件中的用户控件属性

Git:仅列出“未跟踪”文件(还有自定义命令)

R语言使用ggpubr包的ggboxplot函数可视化分组箱图(添加jitter抖动数据点自定义不同分组数据点的形状自定义调色板不添加填充色)

R语言使用ggpubr包的ggboxplot函数可视化分组箱图(添加jitter抖动数据点自定义不同分组数据点的形状自定义调色板不添加填充色)