windows - 使用 xperf 列出每个进程访问的文件?

标签 windows etw xperf

使用 xperf,我可以生成跟踪并获得所有文件的“平面”列表,如下所示:

xperf -on FileIO+FILE_IO+FILE_IO_INIT+FILENAME -stackwalk FileRead+FileWrite+FileDelete

xperf -start FileIOSession -heap -PidNewProcess "C:\Python27\x86\python.exe scratchy.py"-WaitForNewProcess -BufferSize 1024 -MinBuffers 128 -MaxBuffers 512 -stackwalk HeapAlloc+HeapRealloc -f ./tempheap.etl

xperf -stop FileIOSession -stop -d fileio.etl

xperf -i fileio.etl -o fio_output.txt -a 文件名

不幸的是,fio_output.txt 文件包含一个列表,列出了可以想象到的每个被访问过的文件(从我的网络浏览器、IDE 等)。更令人沮丧的是,如果我手动打开 xperfview 并打开文件 I/O 摘要表,我可以看到我的进程(在本例中为 python.exe)和它读取的一个文件(用于测试目的),但似乎无法找到一个在 CLI 上输出相同数据的方法,这正是我需要的——一种无人值守的自动生成文件访问信息的方法。

最佳答案

如果要查看此数据,则应将跟踪加载到 WPA 中,打开文件 I/O 表,并适本地排列列。由于您想要按进程分组,因此您应该首先拥有进程列,然后是橙色条,然后是您想要的任何数据列。

如果您想导出数据以编程方式解析它,那么您应该使用 WPT 8.1 中的新功能 wpaexporter.exe。请参阅我写的这篇描述如何执行此操作的博客文章: https://randomascii.wordpress.com/2013/11/04/exporting-arbitrary-data-from-xperf-etl-files/ 使用 wpaexporter 可以让您准确决定要导出哪些数据列,而不会受到 xperf.exe 为您提供的一组有限的跟踪处理操作的限制。

关于windows - 使用 xperf 列出每个进程访问的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5547019/

相关文章:

udp - WPA 显示 NIC 驱动程序 DPC 片段运行了 232 毫秒

php - 在 XAMPP/Windows 7 上运行的 Google Voice "APIs"的 cURL 问题

html - XAMPP:访问根目录子目录中的html页面

windows - 在应用程序空闲时执行操作

.net-4.5 - .Net 4.5 EventSource ETW 提供程序未显示在提供程序列表中

.net - 获取Windows事件提供程序信息

etw - 如何使用 wpa 查看通用事件详细信息?

python - 给字符串添加换行符,跨平台

c - 如何使用 ETW(StartTrace 等)实时获取事件?

resource-leak - 通过 "System"进程诊断CPU使用率100%的原因