3

使用 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 上输出相同数据的方法,这是我需要的——一种无人值守的自动生成文件访问信息的方法。

4

2 回答 2

1

如果要查看此数据,则应将跟踪加载到 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 为您提供的有限跟踪处理操作集的约束。

于 2015-06-08T19:42:39.490 回答
0

我怀疑你可以从 tracerpt.exe 中获取这些数据 - 我会尝试一下

于 2011-04-05T06:13:57.977 回答