9

我正在尝试制作一个定期记录一大堆事情的程序。具体原因是,如果它蓝屏,开发人员可以返回并检查大量环境,看看当时发生了什么。

我的问题,他们是导致蓝屏的方法吗?也许通过 windowsAPI 调用(也许是零内存?)。

Anywhoo,如果您能想出一种方法来导致蓝屏待命,我将不胜感激。

我正在测试它的计算机旨在接受这样的东西哈哈。

顺便说一句,我使用的语言是 C\C++。谢谢

4

8 回答 8

12

您可以将机器配置为在击键时崩溃 (Ctrl-ScrollLock)

由于有时这在某些带有 USB 键盘的系统上不起作用,您还可以获取 Windows 调试工具,安装内核调试器,并使用“ .crash”命令强制进行错误检查。

于 2009-03-20T19:24:46.090 回答
6

为了导致蓝屏死机,在内核模式下运行的驱动程序需要导致它。如果你真的想这样做,你可以编写一个驱动程序,将 KeBugCheck 暴露给用户模式。

http://msdn.microsoft.com/en-us/library/ms801640.aspx

感谢下面的 Andrew 指出这个实用程序:

http://download.sysinternals.com/files/NotMyFault.zip

于 2009-03-20T19:30:48.057 回答
4

如果您终止 csrss 进程,您将很快获得蓝屏。

于 2009-03-20T19:23:28.230 回答
1

如果您想模拟蓝屏等硬崩溃,您几乎必须拔掉电源线。不建议。

如果发生崩溃,任何未保存到持久存储的内容都将丢失。如果您想模拟崩溃以记录日志,请在您的记录器中写入一个“终止开关”,以停止日志记录。现在,您可以通过终止日志记录来模拟崩溃,并确保您拥有在发生实际崩溃时想要的数据。

于 2009-03-20T19:24:26.840 回答
1

首先,我建议您使用虚拟机来测试此BSOD。这将允许您保留备份,以防蓝屏死机对系统造成一些损害。这是有关如何通过按 CTRL+SCROLLLOCK+SCROLLLOCK来生成 BSOD的提示。

是否有一个 Windows API 来生成一个?不,根据这篇文章。尽管如此,如果您使用无效数据调用某些 API,它们仍然可能导致内核内部崩溃,这将导致您的 BSOD。

于 2009-09-23T11:46:02.787 回答
0

我不确定你到底要测试什么。由于您的程序定期运行,因此在系统运行时检查信息是否以您指定的频率转储就足够了?您是否在检查蓝屏后信息是否保留?根据您转储它的方式(以及您是否正在刷新缓冲区),这可能不是必需的。

于 2009-03-20T19:28:13.307 回答
0

如果您不想编写代码(驱动程序、IOCTL ...),您可以使用DiskCryptor。请注意,不需要磁盘加密。

只需要安装驱动:

dcinst.exe -设置

然后使用 DC 控制台生成一个 bsod:

dccon.exe -bsod

于 2013-02-07T11:04:46.617 回答
0

以批评者身份运行进程并退出 http://waleedassar.blogspot.co.uk/2012/03/rtlsetprocessiscritical.html

于 2013-10-12T20:45:55.290 回答