如何跟踪 FUSE 文件系统中的 open() 系统调用?

如何跟踪 FUSE 文件系统中的 open() 系统调用?

我想跟踪 FUSE 文件系统内进程的所有 open() 系统调用。

两个担忧:

  1. 当 open() 系统调用不会触发 FUSE 文件系统操作时,是否有任何用例?例如,系统调用将由内核在内部处理。

  2. open() 系统调用后可能会触发哪些 FUSE 操作?我找到了那些在 libfuse 文档中

    • 打开()
    • mknod() + 创建()
    • ... 任何其他?

编辑:添加一些上下文:

  • 我已经有了自己的 FUSE 文件系统,因此在 FUSE 中实现时特别询问风险。
  • 系统应该不断运行(而不是偶尔调试/分析),因此性能很重要(strace具有巨大的开销)。
  • 应该适用于静态和动态可执行文件 - 因此覆盖 open() 的库并作为 LD_PRELOAD 注入不是一个可行的选择。

相关内容