我想跟踪 FUSE 文件系统内进程的所有 open() 系统调用。
两个担忧:
当 open() 系统调用不会触发 FUSE 文件系统操作时,是否有任何用例?例如,系统调用将由内核在内部处理。
open() 系统调用后可能会触发哪些 FUSE 操作?我找到了那些在 libfuse 文档中:
- 打开()
- mknod() + 创建()
- ... 任何其他?
编辑:添加一些上下文:
- 我已经有了自己的 FUSE 文件系统,因此在 FUSE 中实现时特别询问风险。
- 系统应该不断运行(而不是偶尔调试/分析),因此性能很重要(
strace
具有巨大的开销)。 - 应该适用于静态和动态可执行文件 - 因此覆盖 open() 的库并作为 LD_PRELOAD 注入不是一个可行的选择。