我的计算机运行 Windows 7 x64 时不时崩溃。您能否建议如何分析内存转储或指出可能的原因以及进一步的故障排除步骤?
计算机已从错误检测中重新启动。错误检测为:0x0000003b (0x00000000c0000005, 0xfffff96000015de8, 0xfffff88007db9fb0, 0x0000000000000000)。转储已保存在:C:\Windows\MEMORY.DMP。报告 ID:080210-24819-01。
摘自 WinDbg 运行结果
EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - 0x%08lx 处的指令引用了 0x%08lx 处的内存。该内存不能是 %s。
...
默认存储桶 ID:VISTA_DRIVER_FAULT
BUGCHECK_STR: 0x3B
进程名称:explorer.exe
...
模块名称: win32k
图像名称: win32k.sys
有什么方法可以了解哪个特定的驱动程序有问题?
答案1
我会使用微软的调试工具:调试。它可以读取并自动分析像您这样的内存转储。(WinDbg 命令的名称很贴切!analyze
:)
该工具功能强大,但相当复杂。以下是详细信息如何指导。
同一论坛建议蓝屏视图。我还没有尝试过;它可能使用起来更简单,但没有提供详细的信息。
更新:
有什么方法可以了解哪个特定的驱动程序有问题?
!analyze
运行k
或之后kd
。这将显示崩溃前的堆栈跟踪。堆栈跟踪是崩溃前进行的函数调用列表,最新调用位于顶部。您至少应该能够了解所涉及的模块(DLL)的文件名。
!analyze
我建议与精通 WinDbg 并愿意提供帮助的人分享完整的结果和/或内存转储。之前链接的MajorGeeks 论坛看起来是个好地方。
答案2
有一个免费工具叫蓝屏视图它将分析转储文件c:\windows\minidump
并显示图形窗口,以便用户可以识别错误
答案3
这可能是导致http://support.microsoft.com/kb/980932 (使用页面顶部的“查看并请求修补程序下载”来请求修补程序,如果不是 1394 Firewire 问题,请不要应用修补程序)
否则,可能是视频驱动程序导致了此问题,这在 W7 中似乎很常见,但其他硬件也可能导致此问题,损坏的内存模块也极有可能是问题。
错误检查 0x3B:SYSTEM_SERVICE_EXCEPTION
http://msdn.microsoft.com/en-us/library/ff558949(v=VS.85).aspx
SYSTEM_SERVICE_EXCEPTION 错误检查的值为 0x0000003B。这表示在执行从非特权代码转换为特权代码的例程时发生了异常。参数
蓝屏上会显示以下参数。参数描述1导致错误检查的异常2导致错误检查的异常的异常记录的地址3导致错误检查的异常的上下文记录的地址40
原因
该错误与分页池使用过多有关,并且可能由于用户模式图形驱动程序交叉并将错误数据传递给内核代码而发生。