我使用的是 Windows 8 x64。MSSE(已重命名为 Windows Defender)在快速扫描期间不断导致 BSoD(问题描述在这里)。我想找出它访问的最后一个文件是哪一个。
通常我使用 SysInternals Process Monitor 来执行此类任务。但是,它没有在事件生成时保存事件的选项,而且由于系统因 BSoD 而崩溃,我看不到任何输出。
您是否知道像 SysInternals Process Monitor 这样的用于监控磁盘 I/O 的工具,它会将所有数据保存到 HDD(当然会过滤掉自己的磁盘 I/O)?
答案1
启用完整崩溃转储。按Win+ Pause,转到“高级系统设置” → 高级选项卡,然后在“启动和恢复”下单击设置。
确保您的页面文件足够大以容纳完整的转储,即至少为 RAM 大小 + 256 MB。
进入“高级系统设置”→“高级”选项卡
在“性能”下,单击“设置”,然后转到“高级”选项卡
单击“更改...”并选择“自定义尺寸”
不要忘记在确定之前单击“设置”,只单击“确定”是行不通的
如果此后系统驱动器上的可用空间少于(25 GB + RAM 大小),请执行以下操作:
打开 Regedit
导航
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl
创建一个 DWORD 键
AlwaysKeepMemoryDump
,其值为 1重启
启动 Xperf 跟踪(
xperf –on DiagEasy
从管理控制台),捕获 HDD 活动。运行 MSE(或 Windows Defender)并等待崩溃。
重新启动 Windows 并使用 WinDbg 打开 Memory.dmp 文件。在 Windbg 中运行以下命令查看所有活动的 ETW 日志记录:
!wmitrace.strdump
查看哪个数字是“NT Kernel Logger”。现在运行以下命令将数据导出到 ETL 文件中:
!wmitrace.logsave 0xNUMBER c:\DISK.etl
在 xperfview/WPA 中打开 ETL 文件并查看访问了哪些文件的磁盘 IO 图。
答案2
Process Monitor 可以将日志文件写入磁盘,请参阅文件 → 支持文件。