2013-06-04 117 views
1

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

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

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

回答

1

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

+0

不,我没有调查'strace'。谢谢你的提示。 –

+0

只需浏览手册页,似乎'strace'是面向过程的。尽管我希望在不区分进程的情况下记录文件系统上的所有系统调用。这可以吗? –

+0

我错过了那一点。如果您想在内核级别进行跟踪,您需要查看诸如Systemtap和LTTNG之类的内容。这些功能非常强大,但比诸如strace之类的要多得多。基本上,当内核遇到特定事件时,你会编写内核中很少的代码位,并且充分利用这些工具要求你对内核的组织方式有一个合理的了解。 –

1

如何使用包装器编写自己的分析工具?见GCC -wrapper

-wrapper
调用的包装方案下的所有子命令。包装程序的名称及其参数作为逗号分隔的列表传递。

+0

感谢您的回复。 –