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