将 syscall 事件跟踪输出的格式更改为 ftrace

Mad*_*wat 5 linux debugging system-calls strace ftrace

我为 sys_enter_openat 系统调用启用了 ftrace 事件跟踪。在 events/syscalls/sys_enter_openat/format 给出的相应输出格式是

print fmt: "dfd: 0x%08lx, filename: 0x%08lx, flags: 0x%08lx, mode: 0x%08lx", ((unsigned long)(REC->dfd)), ((unsigned long)(REC->filename)), ((unsigned long)(REC->flags)), ((unsigned long)(REC->mode))
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,ftrace 的示例输出行类似于

msm_irqbalance-1338  [000] ...1 211710.033931: sys_openat(dfd: ffffff9c, filename: 5af693f224, flags: 2, mode: 0)
Run Code Online (Sandbox Code Playgroud)

有没有办法改变输出格式,这样filename: 5af693f224可以显示为filename: <string>而不是hex(5af693f224)?

所以基本上有一种方法可以在跟踪特定事件(例如上面的 sys_enter_openat)到 ftrace 时更改输出格式。

我想这可以使用 systemtap 或 krpobe 实现,但我的设置目前不允许使用。

nev*_*ets 14

不幸的是,目前没有办法做到这一点。但也许将来我可能会添加它,如果我能找出一个理智的接口和实现来做这样的事情。也许我会添加一个触发器,使输出显示不同。

虽然我可能是 StackExchange 的新手,但我是 ftrace 的作者(真名 Steven Rostedt - 查看 git 历史)。当我编写代码时,“真正的答案”就会出现!