分析错误检查蓝屏数据

注意

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

注意

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

收集停止代码参数

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

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

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

  • 加载生成的转储文件,并将 !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
    

错误检查符号名称

DRIVER_POWER_STATE_FAILURE 是错误检查符号名称,与错误检查代码 9F 相关联。 错误检查代码引用中列出了与错误检查符号名称相关的停止代码十六进制值。

从调试器中读取错误检查信息

如果附加了调试器并且已在电脑上启用调试,则检查错误将导致目标计算机进入调试器。 在这种情况下,蓝屏可能不会立即显示。 此崩溃的完整详细信息将发送到调试器,并显示在调试器窗口中。 若要再次查看此信息,请使用 .bugcheck(显示错误检查数据)命令或 !analyze 扩展命令。 有关启用调试的信息,请参阅 WinDbg 入门指南(内核模式)

内核调试和故障转储分析

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

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

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

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

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

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

使用 !analyze 扩展!analyze

碎片整理工具显示

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

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

给软件工程师的提示

当您编写的代码出现错误检查时,应使用内核调试器分析问题,然后修复代码中的 Bug。 有关完整详细信息,请参阅错误检查代码参考章节中的各个错误检查代码。

但是,您也可能遇到并非由自己的代码引起的错误检查。 在这种情况下,您可能无法解决问题的实际原因,因此您的目标应该是绕过问题。 如果可能,请隔离并删除发生故障的硬件或软件组件。

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

另请参阅