【问题标题】:Capture file system system calls on Linux platform在 Linux 平台上捕获文件系统系统调用
【发布时间】:2013-05-31 04:26:30
【问题描述】:

我想详细捕获文件系统上的所有系统调用。例如。对于write系统调用,我想记录目标文件,写入的字节数和写入发生的偏移量。

目前,我想用inotify 实现这样的记录器。但是,它无法提供此类详细信息。例如。对于write,它不提供写入的字节数和偏移量。 另一种方法是使用在保险丝上实现的bbfs。但是,它会在记录系统调用时引入开销,并将用户操作延迟到无法容忍的程度。

是否有一些库可以捕获文件系统上的系统调用,就像 ptrace 在记录进程发出的所有系统调用时一样?

【问题讨论】:

    标签: linux filesystems system-calls inotify ptrace


    【解决方案1】:

    在 Linux 中有 许多 选项可用于跟踪。但这听起来像是一个非常简单的案例。您是否仅使用strace 实用程序进行了调查?它有很多选项可以控制跟踪粒度,将记录几乎所有系统调用的参数(包括缓冲区内容,如果你愿意的话),并且存在并且基本上可以在任何地方工作,除了安装包之外没有任何设置。

    【讨论】:

    • 不,我没有调查strace。谢谢你的提示。
    • 浏览一下手册页,似乎strace 是面向过程的。虽然我想记录文件系统上的所有系统调用而不区分进程。可以吗?
    • 我错过了那一点。如果您想在内核级别进行跟踪,您将需要查看诸如 Systemtap 和 LTTNG 之类的东西。这些功能要强大得多,但比 strace 之类的东西要复杂得多。基本上,当内核遇到特定事件时,您正在编写少量代码以内联方式运行,并且要充分利用这些工具,您需要对内核的组织方式有一定的了解。
    • 非常感谢。
    【解决方案2】:

    使用包装器编写自己的分析工具怎么样?见 GCC -wrapper:

    -包装器
    调用包装程序下的所有子命令。包装程序的名称及其参数以逗号分隔列表的形式传递。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-12
      • 2016-06-23
      • 1970-01-01
      • 2022-08-23
      • 1970-01-01
      • 2012-06-30
      • 1970-01-01
      • 2015-08-07
      相关资源
      最近更新 更多