一般故障排除提示

如果我们无法使用调试器,这些常规故障排除技巧可能会有所帮助。

  • 如果我们最近向系统添加了硬件,请尝试移除或者更换它。或者与制造商联系以查看是否有可用的补丁。
  • 如果最近添加了新的设备驱动程序或者系统服务,请尝试删除或者更新它们。尝试确定系统中导致新错误检查代码出现的更改。
  • 检查事件查看器中的系统日志以获取可能有助于查明导致错误的设备或者驱动程序的其他错误消息。有关更多信息,请参阅打开事件查看器。

在系统日志中查找与蓝屏在同一时间窗口中发生的严重错误。

  • 请与制造商联系以查看是否有更新的系统 BIOS 或者固件可用。
  • 我们可以尝试运行系统制造商提供的硬件诊断程序。
  • 确认安装的任何新硬件都与安装的 Windows 版本兼容。例如,我们可以在 Windows 10 规范中获取有关所需硬件的信息。
  • 运行病毒检测程序。病毒可以感染为 Windows 格式化的所有类型的硬盘,由此导致的磁盘损坏会生成系统错误检查代码。确保病毒检测程序检查主引导记录是否存在感染。
  • 使用系统文件检查器工具修复丢失或者损坏的系统文件。系统文件检查器是 Windows 中的一个实用程序,它允许用户扫描 Windows 系统文件中的损坏并恢复损坏的文件。使用以下命令运行系统文件检查器工具 (SFC.exe)。
SFC /scannow

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

  • 在设备管理器中查看是否有任何设备标有感叹号 (!)。查看驱动程序属性中显示的任何故障驱动程序的事件日志。尝试更新相关驱动程序。
Windows 蓝屏代码 0xEF:CRITICAL_PROCESS_DIED

CRITICAL_PROCESS_DIED 错误检查的值为 0x000000EF。
这表明一个关键的系统进程死亡。
关键进程是强制系统在其终止时进行错误检查的进程。
当进程状态损坏或者以其他方式损坏时,可能会发生这种情况。
发生这种情况时,由于这些进程对 Windows 的运行至关重要,因此会发生系统错误检查,因为操作系统完整性存在问题。

内置的 Windows 关键系统服务包括 csrss.exe、wininit.exe、logonui.exe、smss.exe、services.exe、conhost.exe 和 winlogon.exe。

开发人员还可以创建服务并将其恢复选项设置为重新启动计算机,有关详细信息,请参阅设置在服务失败时执行的恢复操作。

CRITICAL_PROCESS_DIED 参数

参数描述
1进程对象
2如果为 0,则进程终止。如果这是 1,则线程死亡。
3保留
4保留
更多: zhilu jiaocheng

解决方法

确定此问题的原因通常需要使用调试器来收集其他信息。
应检查多个转储文件以查看此停止代码是否具有相似的特征,例如停止代码出现时正在运行的代码。

有关详细信息,请参阅使用 Windows 调试器 (WinDbg) 进行崩溃转储分析、使用 !analyze 扩展和 !analyze。

在许多情况下,还会在系统错误检查之前创建用户转储。
通常,当用户转储可用时,应首先检查它以找出问题的根本原因。
这是因为从内核转储调试用户模式代码存在限制,包括页面输出/丢失数据。
有关更多信息,请参阅用户模式转储文件。

考虑使用事件日志来查看是否存在导致此停止代码的错误。
如果存在,这些错误可用于检查特定服务或者其他代码以进行调查。

一旦有关相关代码的信息可用,请在执行此代码之前在相关代码中设置断点,然后单步执行代码,查看用于控制代码流的关键变量的值。
仔细检查代码的这个区域以查找错误的假设或者其他错误。

使用错误检查的第二个参数来确定是否是垂死的进程或者线程导致了错误检查。

如果是进程,使用!process命令显示故障点前后进程的信息,以查找异常行为。

进程资源管理器实用程序可用于收集有关正在运行的进程和父子关系的一般信息。

如果是线程,可以考虑使用 !thread 命令来显示线程的信息。

有关内核模式中的线程的信息,请参阅更改上下文。

有关线程和进程的一般信息以及 Windows 受保护的关键代码(如 wininit 和 csrss)的其他详细信息,请参阅 Pavel Yosifovich、Mark E. Russinovich、David A. Solomon 和 Alex Ionescu 的 Windows Internals。

日期:2020-09-17 00:16:15 来源:oir作者:oir