2

最近在我的事件日志中得到了这个:

A fatal hardware error has occurred.
Reported by component: Processor Core
Error Source: Machine Check Exception
Error Type: Bus/Interconnect Error
Processor ID: 1

问题是,如何设计一个可以记录这些错误的日志子系统?

如果发出一个 DMA 请求来写入 HDD 就足够了,没有分页,没有中断,那么在可能发生故障的硬件上仍有大量工作要做。

也让我想起了一个老笑话“找不到 CPU,正在启动软件仿真”。

PS我相信这不属于超级用户或服务器故障,因为我对问题的软件部分感兴趣,而不是诊断我的电脑:)

4

2 回答 2

1

据我所知,该特定错误在 CPU 内部进行了标记。特定的标志是 MCE_FLAG,并且可以使用 CPUID 轮询 CPU 以获取该标志的内容。不是一个汇编程序员,但我认为英特尔架构书籍(英特尔网站上免费)应该有更多的东西。请参阅 CPUID 函数。

于 2011-11-07T00:53:20.303 回答
1

硬件设备由其驱动程序管理,捕获设备错误是其驱动程序职责的一部分。驱动程序可以使用专用的内核 API 将与错误相关的数据写入 Windows 错误日志。日志可以由应用程序解析,但为了了解错误事件数据,需要了解与故障设备相关的专有信息(该信息在文档中或未记录在案)。如果驱动程序是由 MS 实现的,事件查看器能够在不进行额外解析的情况下呈现错误的含义 - 就像在问题中一样。

于 2012-10-22T19:11:25.757 回答