我不确定我是否以正确的方式思考这个问题(如果我错了,请纠正我),但以下是我对 ftrace 的理解。
在/sys/kernel/debug/tracing中,有以下文件:
set_ftrace_filter
这只会跟踪里面列出的功能,
set_ftrace_notrace
这只会跟踪里面没有列出的功能,和
set_ftrace_pid
它只会跟踪带有 pid 内部的进程。
我的问题是:有没有办法配置它,以便 ftrace 只跟踪没有特定 pid(或进程名称)的进程?
比喻:
set_ftrace_filter : set_ftrace_notrace :: set_ftrace_pid : x
x是否存在,如果存在,我该如何使用它?
例如,如果我想跟踪除 pid 为 48 的进程之外的所有进程,是否有某种方法可以将不是 48 的内容放入 set_ftrace_pid 中?
我一直在阅读文档并在网上搜索,但我找不到实现这一目标的方法或这是否可行。
为什么我这样做:我有一个跟踪内核级系统调用的程序,但我想将程序的 pid(以及它的子进程的 pid,如果有必要的话)写入过滤器,这样它们就不会包含在跟踪数据。读取跟踪时,我可以在读取每个跟踪记录时检查 pid 并决定是否使用该记录,但如果有办法避免它,我不希望为读取的每个记录添加此开销。
感谢您的时间!