我希望能够监视进程进行的某些系统调用,主要是文件I/O调用。在Linux上,我可能可以使用绞合使用合适的参数,但是如何在Windows上做到这一点呢?
我主要感兴趣的是运行一个进程,并找出它所读和写的文件。
我想通过另一个进程以编程的方式来完成这个任务。我知道过程监视器,但我想以一种可以导入到另一个程序以进一步分析的形式接收数据。
如果我进一步缩小需求范围,可能就足以监视对CreateFile()的调用。我真正感兴趣的只是打开了哪些文件,以及它们是为读/写打开的,还是只是用于读取的。另一个我没有说过的要求是,速度是相当重要的;我正计划这样做,比如编译C++文件,以及提取一个生成20 MB日志文件的完整GUI,这将产生令人望而却步的开销。
如果它不需要管理特权,那也是很好的。
发布于 2009-05-14 18:09:56
Windows上有几个选项。
Windows性能工具包可用于跟踪各种系统事件,包括文件I/O,并包括处理和查看这些事件的工具。您可以使用xperf开始跟踪不同类型的事件,并将其保存到ETL文件中,然后使用相同的工具处理或查看该文件。
来自过程监视器的Sysinternals是另一个非常容易使用的选项,它使您能够快速查看系统上任何进程的所有文件和注册表访问。你也可以以自动化方式运行流程监视器。
如果您想完全以编程方式完成此操作,则可以使用ETW函数(StartTrace、EnableTrace等)。若要抓取文件I/O事件并保存到ETL文件,请执行以下操作。示例代码这里。
发布于 2009-05-14 18:14:51
在Windows上,您可以使用过程监视器监视进程活动(I/O和注册表)。如果你真的不想知道系统调用的话,我想这符合你的需要。
您可以使用winapioverride32来监视API调用。
发布于 2013-07-03 15:01:04
API监视器由Rohitab是非常好的系统调用。
https://stackoverflow.com/questions/864839
复制相似问题