蓝屏数据

注意 本主题适用于程序员。 如果您是在使用计算机时收到蓝屏错误代码的客户,请参阅蓝屏错误疑难解答

注意如果你是 IT 专业人员或支持代理,请参阅本文了解其他信息、排查“蓝屏”或停止错误问题,然后再联系Microsoft 支持部门

当 Microsoft Windows遇到破坏安全系统操作的条件时,系统将停止。 此条件称为 bug 检查。 它通常也称为 系统崩溃内核错误停止错误

如果允许 OS 在操作系统完整性泄露后继续运行,则可能会损坏数据或破坏系统的安全性。

如果在系统上启用了故障转储,则会创建故障转储文件。

如果附加并处于活动状态内核调试器,则系统会导致中断,以便调试器可用于调查故障。

如果未附加调试器,将显示一个蓝色文本屏幕,其中包含有关错误的信息。 此屏幕称为 蓝色屏幕bug 检查屏幕停止屏幕

如果使用Windows预览体验成员版本,文本将显示在绿色背景上。

蓝屏的确切外观取决于错误的原因。

下面是一个可能的蓝屏示例:

bug check example windows 10 blue screen with qr code.

将显示停止代码,例如 PAGE_FAULT_IN_NONPAGED_AREA。 当可用时,还会显示正在执行的代码的模块名称,例如AcmeVideo.sys。

如果已写入 内核模式转储文件 ,则表示此文件以及写入转储时完成的百分比倒计时。

存在与 Bug 检查代码引用中列出的每个停止代码关联的停止代码十六进制值。

收集停止代码参数

每个 bug 检查代码都有四个关联的参数,这些参数提供其他信息。 每个停止 代码的 Bug 检查代码参考 中介绍了这些参数。

可通过多种方式收集四个停止代码参数。

  • 检查事件查看器中的Windows系统日志。 BugCheck 的事件属性将列出四个停止代码参数。 有关详细信息,请参阅打开事件查看器

  • 加载生成的转储文件,并使用附加了调试器的 !analyze 命令。 有关详细信息,请参阅 使用 WinDbg 分析Kernel-Mode转储文件

  • 将内核调试器附加到故障电脑。 当停止代码发生时,调试器输出将在停止代码十六进制值后包含四个参数。

    *******************************************************************************
    *                                                                             *
    *                        Bugcheck Analysis                                    *
    *                                                                             *
    *******************************************************************************
    
    Use !analyze -v to get detailed debugging information.
    
    BugCheck 9F, {3, ffffe000f38c06a0, fffff803c596cad0, ffffe000f46a1010}
    
    Implicit thread is now ffffe000`f4ca3040
    Probably caused by : hidusb.sys
    

Bug 检查符号名称

DRIVER_POWER_STATE_FAILURE 是 Bug 检查符号名称,其关联的 bug 检查代码为 9F。 与 Bug 检查符号名称关联的停止代码十六进制值列在 Bug 检查代码参考中。

从调试器读取 Bug 检查信息

如果附加了调试器,bug 检查将导致目标计算机闯入调试器。 在这种情况下,蓝屏可能不会立即显示,此崩溃的完整详细信息将发送到调试器并显示在调试器窗口中。 若要第二次查看此信息,请使用 .bugcheck (显示 Bug 检查数据) 命令或 !analyze 扩展命令。

内核调试和故障转储分析

当其他故障排除技术失败或定期问题时,内核调试特别有用。 请记住捕获错误消息的 bug 检查信息部分中的确切文本。 若要隔离复杂问题并制定可行的解决方法,记录导致故障的确切操作非常有用。

!analyze 调试扩展显示有关 bug 检查的信息,并有助于确定根本原因 。

还可以在代码中设置断点,导致此停止代码,并尝试向前单步执行故障代码。

有关详细信息,请参阅以下主题:

使用 Windows 调试器 (WinDbg) 进行故障转储分析

使用 WinDbg 分析内核模式转储文件

使用 !analyze 扩展!analyze

碎片整理工具显示

使用驱动程序验证程序收集信息

据估计,大约四分之三的蓝屏是由故障司机引起的。 驱动程序验证程序是一个实时运行的工具,用于检查驱动程序的行为。 例如,驱动程序验证程序检查内存资源(如内存池)的使用。 如果在执行驱动程序代码时看到错误,它会主动创建一个异常,以允许进一步审查驱动程序代码的一部分。 驱动程序验证程序管理器内置于 Windows 中,可在所有 Windows PC 上使用。 若要启动驱动程序验证程序管理器,请在命令提示下键入“验证程序” 。 你可以配置要验证的驱动程序。 验证驱动程序的代码在运行时会增加开销,因此请尝试验证尽可能少的驱动程序。 有关详细信息,请参阅驱动程序验证程序

软件工程师使用技巧

如果因编写的代码而发生 bug 检查,则应使用内核调试器分析问题,然后修复代码中的 bug。 有关完整详细信息,请参阅 Bug 检查代码参考部分中的各个 bug 检查代码

但是,你还可能会遇到由你自己的代码引起的 bug 检查。 在这种情况下,你可能无法修复问题的实际原因,因此你的目标应该是解决此问题,如果可能隔离并删除故障的硬件或软件组件。

可以通过基本故障排除过程来解决许多问题,例如验证说明、重新安装关键组件和验证文件日期。 此外,事件查看器、Sysinternals 诊断工具和网络监视工具可能会隔离并解决这些问题。

有关 Windows Bug 检查代码的一般故障排除,请按照以下建议操作:

  • 如果最近向系统添加了硬件,请尝试删除或替换它。 或与制造商联系,查看是否有可用的修补程序。

  • 如果最近添加了新的设备驱动程序或系统服务,请尝试删除或更新它们。 尝试确定系统中导致新 Bug 检查代码出现的原因。

  • 设备管理器中查看是否有设备标有感叹号 (!) 。 查看驱动程序属性中显示的任何故障驱动程序的事件日志。 请尝试更新相关驱动程序。

  • 检查事件查看器中的系统日志,以获取可能有助于查明导致错误的设备或驱动程序的其他错误消息。 有关详细信息,请参阅打开事件查看器。 在系统日志中查找与蓝屏同时出现的严重错误。

  • 你可尝试运行系统制造商提供的硬件诊断。

  • 运行Windows内存诊断工具以测试内存。 在控制面板搜索框中,键入“内存”,然后选择“ 诊断计算机的内存问题”。运行测试后,使用事件查看器在系统日志下查看结果。 查找“内存诊断结果”条目以查看结果 。

  • 确认安装的任何新硬件是否与已安装的 Windows 版本兼容。 例如,可以在Windows 10规范中获取有关所需硬件的信息。

  • 运行病毒检测程序。 病毒可以感染格式化为Windows的所有类型的硬盘,生成的磁盘损坏可能会生成系统 bug 检查代码。 确保病毒检测程序检查主启动记录是否存在感染。

  • 使用扫描磁盘实用工具确认没有文件系统错误。 选择并按住 (或右键单击要扫描的驱动器上的) ,然后选择“ 属性”。 选择 “工具”。 选择“ 立即选中 ”按钮。

  • 使用系统文件检查器工具修复缺失或损坏的系统文件。 系统文件检查器是Windows中的一个实用工具,允许用户扫描Windows系统文件中的损坏并还原损坏的文件。 使用以下命令运行系统文件检查器工具 (SFC.exe) 。

    SFC /scannow
    

    有关详细信息,请参阅 使用系统文件检查器工具修复缺失或损坏的系统文件

  • 确认硬盘驱动器上有足够的可用空间。 操作系统和某些应用程序需要足够的可用空间来创建交换文件和其他函数。 根据系统配置,确切的要求各不相同,但通常最好有 10% 到 15% 的可用空间。

  • 验证系统是否已安装最新的 Service Pack。 若要检测系统上安装了哪个 Service Pack,请选择“ 开始”,选择“ 运行”,键入 winver,然后按 Enter。 “关于Windows”对话框显示Windows版本号和 Service Pack 的版本号(如果已安装)。

  • 请咨询制造商,查看更新的系统 BIOS 或固件是否可用。

  • 禁用 BIOS 内存选项,例如缓存或隐藏。

  • 对于电脑,请确保所有扩展板都正确坐着,所有电缆都完全连接。

使用保险箱模式

在删除或禁用组件时,请考虑使用保险箱模式。 在Windows启动期间,使用保险箱模式仅加载所需的最小驱动程序和系统服务。 若要进入保险箱模式,请在设置中使用更新和安全性。 选择 恢复高级>启动 以启动到维护模式。 在生成的菜单中,选择“故障排除-高级选项->>启动设置->重启”。 Windows重启到启动设置屏幕后,选择选项 4、5 或 6 以启动到保险箱模式。

保险箱模式可以通过在启动时按函数键(例如 F8)来使用。 有关特定启动选项,请参阅制造商中的信息。