Language agnostic 抓住可怕的死亡蓝屏

Language agnostic 抓住可怕的死亡蓝屏,language-agnostic,bsod,Language Agnostic,Bsod,这是一个简单的问题。有时Windows会停止所有操作并抛出BSOD。游戏结束,请重新启动以玩另一个游戏。或者别的什么。烦人但不是很严重 我想要的很简单。我想在BSOD发生时捕捉它。为什么?只是为了一些额外的崩溃日志。系统变蓝没关系,但当它发生时,我只想记录一些附加信息或执行一个附加操作 这可能吗?如果是,怎么做?限制是什么? 顺便说一句,当系统恢复时,我不想做任何事情,我想在它发生时捕捉它。这让我有一个最后的行动。(例如,在系统关闭之前刷新文件。)BSOD是由于Windows内核中的错误或更常

这是一个简单的问题。有时Windows会停止所有操作并抛出BSOD。游戏结束,请重新启动以玩另一个游戏。或者别的什么。烦人但不是很严重

我想要的很简单。我想在BSOD发生时捕捉它。为什么?只是为了一些额外的崩溃日志。系统变蓝没关系,但当它发生时,我只想记录一些附加信息或执行一个附加操作

这可能吗?如果是,怎么做?限制是什么?

顺便说一句,当系统恢复时,我不想做任何事情,我想在它发生时捕捉它。这让我有一个最后的行动。(例如,在系统关闭之前刷新文件。)

BSOD是由于Windows内核中的错误或更常见的是错误的设备驱动程序(在内核模式下运行)导致的。你对此无能为力。如果是驱动程序问题,您可以希望供应商将其修复

您可以将Windows配置为在BSOD上创建内存转储,这将帮助您解决问题。通过将转储加载到WinDbg并使用
,您可以对故障驱动程序有一个非常好的了解!分析
命令

知道是哪个驱动程序导致了问题,可以让您寻找新的驱动程序,但是如果这不能解决问题,那么您几乎无能为力(除非您非常擅长使用十六进制编辑器)


更新:如果你想在它发生时调试它,你需要调试内核。马克·鲁西诺维奇的书是获取更多信息的好地方。此外,我相信WinDbg的帮助文件中有一些信息,设备驱动程序工具包中也一定有一些信息(但这超出了我的知识范围)

数据存储在所谓的“迷你转储”中


然后,您可以使用调试工具来探索这些转储。此处记录了该过程

可以将Windows配置为在蓝色屏幕上创建崩溃转储

以下是更多信息:

有两种方法可以找出发生了什么:

第一个是将位于C:\Minidump***.dmp下的dmp文件上载到microsoft服务,如他们所述:

注意:您会发现几个文件,您可以使用包含事件日期的名称来区分它们之间的差异

第二种方法是记录蓝屏上的错误代码,并在谷歌和微软网站上搜索


第一种方法更准确、更有效。

无论如何,知道哪个驾驶员出了故障仍然是非常有价值的。即使您可能无法实际构建一个新的驱动程序,您也可以知道要密切关注哪个供应商,在极端情况下,使用故障驱动程序替换硬件,以更好的驱动程序开发人员开发不同品牌的驱动程序。我不想在出现故障时修复它。我知道最好不要尝试这个。但我希望能在系统崩溃之前再做一次最后的行动。因此,我想捕捉这个事件。@Alex:Windows认为BSOD是一个不可恢复的错误,因此很难以可靠的方式进行操作。@Brian,我意识到这一点。也许捕获它的方法甚至取决于每个Windows版本。只是想知道有没有可能。如果可能的话,我的代码有哪些限制。好吧,如果调试内核可以帮助我捕获可能的错误,我会试试看。:-)我知道这一点,但当我分析垃圾时,我已经太迟了。我想在撞车时采取行动,而不是事后。很好的链接(+1),但不是我想要的答案。我建议你问一个新的、措辞更好的问题:“如何调试Windows内核?我想在它发生时能够挂接到BSOD”嗯,答案似乎是:你可以在为内核使用调试器时这样做。谢谢Vinko和Brian。不过,如果还有其他选择,请随意添加,如果可行的话,我可以更改已接受的答案。