蓝屏数据

注意

这篇文章适合程序员阅读。 如果您是在使用计算机时收到蓝屏错误代码的客户,请参阅蓝屏错误疑难解答

注意

如果您是 IT 专业人员或支持代理方,请参阅停止错误或蓝屏错误问题高级疑难解答了解更多信息。

当 Microsoft Windows 遇到危及系统安全操作的情况时,系统将停止。 此条件称为 Bug 检查。 它也称为系统崩溃内核错误停止错误
可能发生的情况示例包括:

  • 如果允许操作系统在操作系统完整性受到破坏后继续运行,可能会损坏数据或危及系统的安全性。

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

  • 如果内核调试器已附加且处于活动状态,则系统会中断,以便使用调试器调查崩溃。

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

如果您使用的是 Windows 预览体验成员版本,文本会显示在绿色背景上。 蓝屏的确切外观取决于错误原因。 以下示例演示了可能出现的蓝屏类型:

Screenshot of a Windows 10 blue screen displaying a bug check with a QR code.

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

如果已写入内核模式转储文件,则会在写入转储时以百分比完成倒计时的方式显示。

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

收集停止代码参数

每个 Bug 检查代码都有四个提供信息的关联参数。 Bug 检查代码引用中介绍了每个停止代码的参数。

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

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

  • 加载生成的转储文件,并将 !analyze 命令与附加的调试器一起使用。 有关详细信息,请参阅使用 WinDbg 分析内核模式转储文件

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

    *******************************************************************************
    *                                                                             *
    *                        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 扩展命令。 有关启用调试的信息,请参阅 WinDbg 入门指南(内核模式)

内核调试和故障转储分析

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

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

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

有关详细信息,请参阅以下文章:

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

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

使用 !analyze 扩展!analyze

碎片整理工具显示

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

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

给软件工程师的提示

当您编写的代码出现 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 启动过程中,使用安全模式只会加载所需的最低驱动程序和系统服务。

    1. 若要进入安全模式,请转到设置并选择更新和安全
    2. 选择恢复>高级启动以启动进入维护模式。
    3. 在生成的菜单中,选择疑难解答>高级选项>启动设置>重启
    4. Windows 重启进入“启动设置”界面后,选择选项 4、5 或 6 以启动进入安全模式。

    在启动时按下功能键(例如 F8)可以进入安全模式。 有关具体的启动选项,请参阅制造商提供的信息。

另请参阅