我从正在编写的驱动程序中获得了一个可爱的BSOD启动(STOP: 0x0000007E
),并且想要加载内存转储以进行分析。但是,它不会被倾倒在任何地方。在启动和恢复设置中正确设置了所有内容,但我没有获得转储文件,并且事件日志中没有任何内容说明转储已发生。看起来甚至没有发生转储...
我知道引起它的确切代码行(调用IoAttachDevice()
),但我不确定原因,并希望查看DbgPrint
输出以查看其确切失败的位置。在设置转储功能之前,Windows可能会崩溃吗?如果是这样,如何在发生故障时访问机器的状态?
更新:其他可能有用的信息:我在Linux主机上通过VirtualBox运行Windows XP。
答案 0 :(得分:2)
我不知道为什么你没有获得转储文件,但是如果你已经可以随时访问该机器,请将内核调试器附加到它上面,重新发生错误 - 你将留下机器坐在调试器,准备就绪(如果你想离线调试,你可以让调试器为你生成转储文件)。
答案 1 :(得分:1)
右键单击“我的电脑”选择“高级”,在“启动和恢复”下单击“设置”。选择“kernel memory dump”或“complete memory dump”。
答案 2 :(得分:1)
您的驱动程序的开始设置是什么?如果它在引导顺序中启动得太早,则文件系统可能还没有重新读写,因此没有转储的地方。
正在开发的驱动程序通常不应设置为自动启动,直到您以后加载驱动程序稳定为止。当然,您最终需要将其设置为自动启动,以便您可以验证它是否正常工作,但后来会发生。