分析没有转储的BSOD

时间:2012-07-02 08:36:28

标签: c windows driver kernel bsod

我正在开发的其中一个驱动程序导致了BSOD。遗憾的是,由于未配置/资源不足,因此未创建转储文件。我试图重现这次崩溃但到目前为止没有运气。

有没有办法使用WinDbg或任何其他工具获取一些信息? 我有这个信息:

  • BSOD的屏幕截图
  • .sys文件。
  • 其pdb
  • 源代码
  • 它崩溃的机器

我拥有除转储本身以外的所有东西。

非常感谢您的帮助。


如上所述,不存在转储(/ minidump)。这是实际问题。

对于这次特定的崩溃,我知道我无法获得堆栈。只需获取特定代码就足够了。因为BSOD包含模块的地址,所以似乎应该有一种方法来检测它究竟是哪一行。正如我上面提到的,我确实有.sys文件,pdb和源代码。

这是从MSDN获取的具体代码:SYSTEM_SERVICE_EXCEPTION。 我怎么知道具体的那条线是什么?和/或提出的具体例外?

2 个答案:

答案 0 :(得分:1)

你有崩溃地址,想知道源代码行吗?

启动kd或windbg,在它之前解析该地址和代码。找到函数入口点(它调整堆栈的位置),您现在可以查找符号表。从那里你再次贬低并比较来源。

抱歉,我想你需要阅读一些asm。我知道没有更好的方法。

答案 1 :(得分:0)

如果您很幸运,您将在C:\windows中使用minidump,因此请检查它是否在那里。 如果可以在Windbg中打开它并进行分析。 您不需要配置低资源来创建转储,请参阅此链接http://support.microsoft.com/kb/254649,了解如何设置窗口以创建转储文件。如果要调试驱动程序,请创建完全转储。

回到你的问题来分析问题:

但是你不太可能用你掌握的信息得出好的结论。你需要转储文件才能真正理解这个问题。