5

我正在从我正在编写的驱动程序中得到一个可爱的 BSOD(STOP: 0x0000007E),并且想加载内存转储以进行分析。但是,它不会被倾倒在任何地方。在启动和恢复设置中一切都设置正确,但我没有得到转储文件,并且事件日志中没有任何内容表明已发生转储。看起来甚至没有发生转储...

我知道导致它的确切代码行(对 的调用IoAttachDevice()),但不知道为什么,并且想查看DbgPrint输出以了解它到底在哪里失败。在设置转储功能之前,Windows 可能会崩溃吗?如果是这样,当故障发生时,我如何访问机器的状态?

更新:其他可能有用的信息:我在 Linux 主机上通过 VirtualBox 运行 Windows XP。

4

3 回答 3

2

我不知道你为什么没有得到转储文件,但是如果你已经准备好访问机器,请将内核调试器附加到它以重现错误 - 你将留在调试器中的机器,准备好了去(如果你想离线调试,你可以让调试器为你生成转储文件)。

于 2010-12-03T19:30:12.250 回答
1

右键单击“我的电脑”选择“高级”,在“启动和恢复”下单击“设置”。选择“内核内存转储”或“完整内存转储”。

于 2010-12-26T04:51:38.117 回答
1

您的驱动程序的启动设置是什么?如果它在引导顺序中启动得太早,文件系统可能还没有以读写方式重新挂载,因此没有地方可以进行转储。

正在开发的驱动程序通常不应设置为自动启动,直到您在稍后加载时使驱动程序稳定。当然,您最终需要将其设置为自动启动,以便您可以验证它是否正常工作,但这稍后会出现。

于 2010-12-26T04:56:51.910 回答