我正在开发的驱动程序之一导致了 BSOD。不幸的是,由于未配置/资源不足,因此未创建转储文件。我试图重现这次崩溃,但到目前为止还没有成功。
有没有办法使用 WinDbg 或任何其他工具获取一些信息? 我有以下信息:
- BSOD 的屏幕截图
- .sys 文件。
- 它的 pdb
- 源代码
- 崩溃的机器
除了转储本身之外,我拥有一切。
我们将非常感谢您的帮助。
<小时/>正如我上面所说,不存在转储 (/minidump)。这就是实际问题。
对于这个特定的崩溃,我知道我将无法获取堆栈。只需获取特定的代码行就足够了。因为 BSOD 包含模块的地址,所以似乎应该有一种方法来检测它到底是哪一行。正如我上面提到的,我确实有 .sys 文件、pdb 和源代码。
这是取自MSDN的具体代码:SYSTEM_SERVICE_EXCEPTION 。 我怎样才能知 Prop 体的线路是什么?和/或引发的具体异常?
最佳答案
您有崩溃地址,想知道源代码行吗?
启动 kd 或 Windbg,取消该地址及其前面的代码。找到函数入口点(在其中调整堆栈),您现在可以查找符号表。从那里你再次反驳并比较来源。
抱歉,我想您需要阅读一些 asm。我不知道有什么更好的办法。
关于c - 无需转储即可分析 BSOD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11290271/