幸运的是,我没有编写过很多导致 BSOD 的应用程序,但我只是想知道这个屏幕上的信息是否有用。它是否包含任何有用的信息可以帮助我找到代码中的错误?如果是这样,我到底需要什么?
然后,系统重新启动,并且可能已将一些错误日志或其他信息写入系统的某处。它在哪里,包含什么以及如何使用它来改进我的代码?
过去,当我与 PBX 系统交互时,我确实经常遇到 BSOD,因为该系统的驱动程序文档数量很少,所以我不得不进行一些试错编码。幸运的是,我现在为另一家公司工作,并且没有看到我的代码导致任何 BSOD。
如果您想要一种相当简单的方法来找出导致操作系统崩溃的原因,并且该方法在大约 90% 的情况下都有效(假设您有可用的故障转储),那么请尝试以下操作:
- 下载 WinDbg 作为适用于 Windows 的调试工具包裹。请注意,您只需安装名为“Windows 调试工具”的组件。
- 运行WinDbg
- 从文件菜单中选择“打开故障转储”
- 当转储文件已加载类型
analyze -v
然后按回车键
- WinDbg 将对崩溃进行自动分析,并提供有关崩溃时系统状态的大量信息。它通常能够告诉您哪个模块出现故障以及导致崩溃的错误类型。您还应该获得一个堆栈跟踪,它可能对您有帮助,也可能没有帮助。
- 另一个有用的命令是
kb
它打印出堆栈跟踪。在该列表中,查找包含以下内容的行:.sys
。这通常是造成车祸的司机。
请注意,您必须配置符号在 WinDbg 中,如果您希望堆栈跟踪为您提供函数名称。去做这个:
- 创建一个文件夹,例如 C:\symbols
- 在 WinDbg 中,打开文件 -> 符号文件路径
- Add:
SRV*C:\symbols*http://msdl.microsoft.com/download/symbols
这将缓存来自 Microsoft 服务器的符号文件。
如果自动分析还不够,那么 WinDbg 提供了多种命令,使您能够准确地找出崩溃时发生的情况。在这种情况下,帮助文件是一个很好的起点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)