WER 如何收集和分类错误报告

Microsoft Windows 错误报告 (WER) 服务可以捕获内核模式(操作系统)和用户模式(应用程序)崩溃信息,其中包括有关驱动程序和应用程序以及关于在崩溃时运行的模块(控件和插件)的信息。

Windows 错误报告 (WER):分类

最终用户选择通过 Internet 将错误报告发送给 Microsoft 时,WER 服务将收集关于崩溃的技术信息。 此数据仅用于质量控制,不会用来跟踪各个用户或安装以用营销目的。 如果可帮助最终用户解决问题的信息可用,Windows 将向用户显示一条包含该信息链接的消息。

WER 可将相同问题的错误报告分类到一个存储段中。 客户发送错误报告时,WER 将决定此问题的存储段是否已存在。 若存在,则将报告添加到现有的存储段中。 若不存在,将新建存储段。

收集的数据类型和用于定义存储段的架构对于用户模式崩溃和内核模式崩溃是不同的。

对内核模式崩溃进行分类

内核模式崩溃首先按停止代码进行分组,然后再按其他参数(取决于单个停止代码)进行分组。 存储段名称基于错误和设备的类型。 例如:

存储段名称 错误

OLD_IMAGE_SAMPLE.SYS_DEV_3577

崩溃是由设备 ID 3577 上的旧版本 sample.sys 导致的。

0x44_BUGCHECKING_DRIVER_ SAMPLE

驱动程序 sample.sys 可能导致了 Bugcheck 0x44

POOL_CORRUPTION_ SAMPLE

驱动程序 sample.sys 可能导致了池损坏

0xBE_sample!bar+1a

驱动程序 sample.sys 在例程栏中发生崩溃

内核模式崩溃的错误报告包含在崩溃时生成的小型转储文件和在计算机重新启动并即将发送错误报告时生成的 XML 文件。

Windows 停止响应时,它将还原到低级疑难解答模式。 在此模式下,可以捕获到包含低级操作系统数据结构的转储文件,这些结构可以识别崩溃时计算机中发生的情况。 这些数据结构包括崩溃时处理器正在执行的功能、CPU 注册状态以及堆栈、线程和进程信息。 可以在调试程序中查看此数据,也可以将它用来识别错误组件。

转储文件还包含崩溃时计算机中加载的所有驱动程序的列表。 调试程序使用此数据来决定需要加载哪些驱动程序映像和符号来调试崩溃。 模块列表也可以帮助确定计算机上是否在运行已知损坏的或过时的驱动程序。

从 Windows XP Service Pack 1 (SP1) 开始,转储文件已得到改进,以允许驱动程序在可以用于疑难解答的崩溃转储文件中存储信息。 从驱动程序中收集崩溃数据的例程是 KeRegisterBugCheckCallback

对用户模式崩溃进行分类

根据下列参数对用户模式崩溃进行分类:

  1. 应用程序名称 - 例如,winword.exe

  2. 应用程序版本 - 例如,10.0.2627.0

  3. 模块名称 - 例如,mso.dll

  4. 模块版本 - 例如,10.0.2613.1

  5. 进入模块的偏移 - 例如,00003cbb

用户模式崩溃的 .cab 文件包括这些信息以及一个小型转储文件。 用户模式崩溃的小型转储文件包含发生崩溃时进程的状态(特别是应用程序中每个线程的注册和堆栈)。 使用此信息来识别哪些应用程序组件导致了崩溃。 小型转储文件还包含崩溃时应用程序中加载的所有模块的列表,以便可以获取有关在该过程中加载的每个模块的信息以及获取每个模块的符号。

错误分类资源

WER 资源

向 Microsoft 发送有关该主题的评论