为什么 Windows 不保存错误检查的小型转储?

为什么 Windows 不保存错误检查的小型转储?

我如何修复下面描述的 Windows,以便在%SystemRoot%\Minidump发生错误检查时保存小型转储?,因为它应该正常进行。我需要小型转储来知道哪个驱动程序发生故障,需要删除或更改

recoveros

设置recoveros正确

wmic recoveros list /format:list && wmic recoveros get debuginfotype,minidumpdirectory /format:list
AutoReboot=TRUE
WriteDebugInfo=TRUE
WriteToSystemLog=TRUE
DebugInfoType=3
MiniDumpDirectory=%SystemRoot%\Minidump

禁用自动重启也没关系

wmic recoveros set autoreboot=false

错误检测编号

没有迹象表明错误检测编号很重要(某些错误检测编号会保存小型转储),因为

  • 307 (2012-12-03 - 2013-10-06) 天内未保存任何小型转储

  • 根据Control Panel\System and Security\Action Center\Reliability Monitor

未保存的错误检测名称的示例为

PROCESS_HAS_LOCKED_PAGES
no bugcheck name (the "BugCheck name" row in the topic "Bugcheck display" isn't written)

错误检测显示

错误检查显示的消息与保存小型转储事件(1001)时的消息相同(并不表示它没有保存小型转储)

A problem has been detected and Windows has been shutdown to prevent damage to your computer.

BugCheck name (this row is sometimes not displayed)

General information

Technical information:

*** STOP: BugCheck code (arguments)

*** driver where BugCheck was called

Collecting data for crash dump ...
Initializing disk for crash dump ...
Physical memory dump complete.
Contact your system administrator or technical support group for further assistance.

wevtutil

当发生错误检查时

Windows 不保存小型转储事件(1001)

wevtutil qe system /q:*[System[EventID=1001]] /rd:true /f:text /c:1

Windows 保存其他错误检测事件

wevtutil qe system /q:*[System[EventID=41]] /rd:true /f:text /c:1
  Date: 2013-01-29T19:15:42.198
The system has rebooted without cleanly shutting down first. This error could be caused if the system stopped responding, crashed, or lost power unexpectedly.

wevtutil qe system /q:*[System[EventID=6008]] /rd:true /f:text /c:1
  Date: 2013-01-29T19:15:47.000
The previous system shutdown at 7:14:47 PM on ‎1/‎29/‎2013 was unexpected.

wevtutil qe system /q:*[System[EventID=1076]] /rd:true /f:text /c:1
  Date: 2013-01-29T19:16:49.000
The reason supplied by user PC\User for the last unexpected shutdown of this computer is: System Failure: Stop error
 Reason Code: 0x805000f
 Problem ID:
 Bugcheck String:
 Comment:

werfault

werfault在 BugCheck 之后启动时,Windows 不会显示此对话框

Windows 已从意外关机中恢复

Windows 可以在线检查该问题的解决方案。

可靠性监控器

当错误检查没有保存小型转储时,可靠性监视器历史记录会显示此消息

关键事件

Windows 没有正确关闭

上次系统关闭时间为 2013 年 8 月 21 日凌晨 2:11:08,是意外事件。

当错误检查保存小型转储时,不会出现此消息

关键事件

Windows 停止工作

计算机已从错误检测中重新启动。错误检测为:0x0000003b (0x00000000c0000005, 0xfffff96000352e77, 0xfffff8802385fea0, 0x0000000000000000)。转储已保存在:C:\Windows\Minidump\100613-14570-01.dmp。报告 ID:100613-14570-01。

minidumpscount

minidumpscount大于 0(并且,如果重要的话,高于小型转储的数量)

reg query hklm\system\currentcontrolset\control\crashcontrol /v minidumpscount
    minidumpscount    REG_DWORD    0x3e7

dir %systemroot%\minidump | tail -2
              35 File(s)      9▒917▒969 bytes

pagefileset

保存小型转储的适当pagefileset大小尚不清楚。可能是这个大小

wmic pagefileset list /format:list
InitialSize=1000
MaximumSize=1000

这些尺寸都试过了,问题还是没有解决

wmic pagefileset where name="c:\\pagefile.sys" set initialsize=2000,maximumsize=2000
wmic pagefileset where name="c:\\pagefile.sys" set initialsize=3000,maximumsize=3000
wmic pagefileset where name="c:\\pagefile.sys" set initialsize=4000,maximumsize=4000
wmic computersystem where name="%computername%" set automaticmanagedpagefile=true

attrib

小型转储文件夹不是只读的(即允许 BugCheck 保存小型转储)

attrib %SystemRoot%\Minidump
        I    C:\Windows\Minidump

icacls

小型转储文件夹安全性正确(即允许 BugCheck 保存小型转储)

icacls %SystemRoot%\Minidump
C:\Windows\Minidump BUILTIN\Administrators:(OI)(CI)(F)
                    NT AUTHORITY\SYSTEM:(OI)(CI)(F)

Successfully processed 1 files; Failed processing 0 files

rmdir

minidump 文件夹被删除,因为

  • 这会降低文件夹安全性错误的可能性,因为这通常会导致下一个 BugCheck 创建具有正确安全性的文件夹
rmdir /s /q %SystemRoot%\Minidump

但是,BugCheck 不会创建名为 %SystemRoot%\Minidump 的文件夹。但使用mkdir以下命令手动创建 minidump 文件夹不会导致 BugCheck 保存 minidump

mkdir %SystemRoot%\Minidump

上次小型转储

最后 41 个有小型转储的事件是

wevtutil qe system /q:*[System[EventID=41]] /rd:true /f:text /c:6
Event[5]:
  Date: 2012-12-03T06:21:37.590

dir %systemroot%\minidump /o:-d | head -8 | tail -1
2012-12-03  06:21           322▒616 120312-37830-01.dmp

系统

我的系统是

Operating System
    Windows 7 Ultimate 64-bit SP1
CPU
    Intel Core i7 3770K @ 3.50GHz   49 °C
    Ivy Bridge 22nm Technology
RAM
    32,0GB Dual-Channel DDR3 @ 668MHz (9-9-9-24)
Motherboard
    ASUSTeK COMPUTER INC. P8Z77-M PRO (LGA1155) 36 °C
Graphics
    DELL U2312HM (1920x1080@60Hz)
    BenQG2222HDL (1920x1080@60Hz)
    Intel HD Graphics 4000 (ASUStek Computer Inc)
    1024MB ATI AMD Radeon HD 6800 Series (XFX Pine Group)   79 °C
Hard Drives
    112GB OCZ-VERTEX2 ATA Device (SSD)  30 °C
Optical Drives
    QBCNK MRSHA3S5 SCSI CdRom Device
Audio
    Corsair Vengeance 2000 Headset

可用的 c: 磁盘空间为

fsutil volume diskfree c:
Total # of free bytes        : 19957088256
Total # of bytes             : 119926681600
Total # of avail free bytes  : 19957088256

答案1

回答

将 pagefile.sys 大小更改为 ≥ RAM 大小

解决方案是将 pagefile.sys 大小更改为 ≥ RAM 大小

wmic computersystem where name="%computername%" set automaticmanagedpagefile=true

wmic pagefile list /format:list
AllocatedBaseSize=32635
CurrentUsage=0
PeakUsage=0

dir /ah c:\pagefile.sys
2013-10-06  14:29    34 220 941 312 pagefile.sys

此后,即使将页面文件更改为小于问题中使用的最大页面文件大小(4000),仍会保存小型转储

wmic pagefileset where name="c:\\pagefile.sys" set initialsize=10000,maximumsize=10000
wmic pagefileset where name="c:\\pagefile.sys" set initialsize=5000,maximumsize=5000
wmic pagefileset where name="c:\\pagefile.sys" set initialsize=4000,maximumsize=4000
wmic pagefileset where name="c:\\pagefile.sys" set initialsize=3000,maximumsize=3000
wmic pagefileset where name="c:\\pagefile.sys" set initialsize=2000,maximumsize=2000

将可用 c: 磁盘空间增加到 ≥ RAM 大小

并且/或者解决方案是将可用的 c: 磁盘空间更改为 ≥ RAM 大小(并将页面文件大小设置为至少 2000),因为

  • 无法确定哪个更改解决了该问题(在“更改磁盘大小或页面文件大小后问题解决”中描述)

更改磁盘大小或页面文件大小后问题解决

问题解决后

  • 将页面文件大小更改为 > RAM 大小

  • 和/或将可用 c: 磁盘空间更改为 ≥ RAM 大小

此后,注意到将页面文件大小从 32 G(automaticmanagedpagefile=true)减少到 2 G(maximumsize=2000)并没有再次出现问题

无法确定哪个更改解决了该问题,因为

  • 将可用磁盘空间和页面文件大小更改为 > RAM 大小 (32 G) 后,问题得到解决

  • 在问题中,当页面文件大小为 4 G(最大大小 = 4000)时,BugCheck 应该保存小型转储,因为在 BugCheck 再次开始保存小型转储后,它会在页面文件大小减小到 4 G(最大大小 = 2000)以下后继续保存它们

系统

与问题中的主题“系统”相比,系统(Speccy 输出)的差异是

Hard Drives
    233GB Samsung SSD 840 EVO 250GB ATA Device (SSD)    34 °C

磁盘空间

可用的 c: 磁盘空间为

fsutil volume diskfree c:
Total # of free bytes        : 82576859136
Total # of bytes             : 249844199424
Total # of avail free bytes  : 82576859136

页面文件大小和小型转储

如下输出中所述,BugCheck 将为其创建小型转储的页面文件大小

wmic computersystem where name="%computername%" set automaticmanagedpagefile=true

dir %systemroot%\minidump /o:-d | head -9 | tail -2
2013-10-06  14:29           324▒949 100613-14570-01.dmp
2012-12-03  07:21           322▒616 120312-37830-01.dmp

wmic pagefileset where name="c:\\pagefile.sys" set initialsize=10000,maximumsize=10000

dir %systemroot%\minidump /o:-d | head -9 | tail -2
2013-10-11  18:46           324▒045 101113-13587-01.dmp
2013-10-06  14:29           324▒949 100613-14570-01.dmp

wmic pagefileset where name="c:\\pagefile.sys" set initialsize=5000,maximumsize=5000

dir %systemroot%\minidump /o:-d | head -9 | tail -2
2014-01-05  04:50           325▒061 010514-12417-01.dmp
2013-10-11  17:46           324▒045 101113-13587-01.dmp

wmic pagefileset where name="c:\\pagefile.sys" set initialsize=4000,maximumsize=4000

dir %systemroot%\minidump /o:-d | head -9 | tail -2
2014-01-23  03:45           323▒205 012314-11481-01.dmp
2014-01-05  04:50           325▒061 010514-12417-01.dmp

wmic pagefileset where name="c:\\pagefile.sys" set initialsize=3000,maximumsize=3000

dir %systemroot%\minidump /o:-d | head -9 | tail -2
2014-02-15  02:12           323▒013 021514-10873-01.dmp
2014-01-23  03:45           323▒205 012314-11481-01.dmp

未解决的问题

即使应用主题“答案”中描述的解决方案后,这些问题仍然没有解决

未描述 minidump 的最小 pagefile.sys

微软尚未明确描述当 RAM 为 32 GB 时 Windows 保存小型转储的最小 pagefile.sys 大小

误导性的 BugCheck 屏幕消息

当小型转储未保存时,微软也会在 BugCheck 屏幕上显示“物理内存转储已完成”,从而误导用户

Samsung Magician 的建议并未表明它会导致 Windows 无法保存小型转储

三星并未指出三星 Magician 4.2.1 中“系统管理 > 操作系统优化”中的 pagefile.sys 大小建议可能会导致 BugCheck 无法保存小型转储

Samsung Magician 4.2.1“系统管理 > 操作系统优化”建议

Maximum Capacity and Maximum Reliability

Virtual Memory

Virtual memory will be set to an initial size of 200 MB and a maximum of 1 GB.


Advanced

Manually set virtual memory in Windows Performance Options. If your PC has more than 4 GB of RAM, Samsung recommends you initially set virtual memory to 200 MB with a maximum of 2 GB. Use the shortcut to the right to adjsut settings.

因此“高级”建议是

wmic pagefileset where name="c:\\pagefile.sys" set initialsize=200,maximumsize=2000

推荐

描述最小 pagefile.sys 大小

微软应该描述 BugCheck 保存小型转储的最小 c:\pagefile.sys 大小,因为

  • 当 RAM 大小为 32 GB RAM 时,“wmic pagefile list /format:list”的“PeakUsage”输出有时为 0。也就是说 pagefile.sys 的实用性为 0

  • 32 GB SSD 的成本超过 0(约 15 欧元)

更改 Windows,以便当 pagefile.sys 较小时 BugCheck 保存小型转储

微软应该改变 Windows,以便当 c:\pagefile.sys 较小(例如 0.2 GB)时保存小型转储,因为

  • 先前建议中的理由
  • minidump 有一个实用程序(识别导致 BugCheck 的驱动程序)。Iow BugCheck 应该始终创建它

相关内容