好吧,幸运的是,我没有编写很多导致 BSOD 的应用程序,但我只是想知道这个屏幕上的信息是否有用。它是否包含任何有用的信息,可以帮助我找到代码中的错误?如果是这样,我到底需要什么?
然后,系统重新启动,并且可能已将一些错误日志或其他信息写入系统某处。它在哪里,它包含什么以及如何使用它来改进我的代码?
过去,当我与 PBX 系统交互时,我确实经常遇到 BSOD,因为它的驱动程序的文档数量很少,所以我不得不进行一些试错编码。幸运的是,我现在为另一家公司工作,并且由于我的代码没有看到任何蓝屏死机。
好吧,幸运的是,我没有编写很多导致 BSOD 的应用程序,但我只是想知道这个屏幕上的信息是否有用。它是否包含任何有用的信息,可以帮助我找到代码中的错误?如果是这样,我到底需要什么?
然后,系统重新启动,并且可能已将一些错误日志或其他信息写入系统某处。它在哪里,它包含什么以及如何使用它来改进我的代码?
过去,当我与 PBX 系统交互时,我确实经常遇到 BSOD,因为它的驱动程序的文档数量很少,所以我不得不进行一些试错编码。幸运的是,我现在为另一家公司工作,并且由于我的代码没有看到任何蓝屏死机。
如果您想要一种相当简单的方法来找出导致操作系统崩溃的原因,并且在大约 90% 的时间里都可以正常工作(假设您有可用的崩溃转储),请尝试以下操作:
analyze -v并按回车键kb打印堆栈跟踪。在该列表中,查找包含.sys. 这通常是导致车祸的司机。请注意,如果您希望堆栈跟踪为您提供函数名称,则必须在 WinDbg中配置符号。去做这个:
SRV*C:\symbols*http://msdl.microsoft.com/download/symbols这将缓存来自 Microsoft 服务器的符号文件。
如果自动分析不够充分,那么 WinDbg 提供了多种命令,使您能够准确计算出崩溃时发生的情况。在这种情况下,帮助文件是一个很好的起点。
一般来说,您不能在应用程序代码中导致操作系统崩溃或错误检查。也就是说,如果您正在寻找一般提示和资料,我推荐NTDebugging 博客。大多数事情都超出了我的想象。
当操作系统崩溃时会发生什么,它将写入一个内核转储文件,这取决于当前的标志等等,你会在其中获得或多或少的信息。您可以在 windbg 或其他调试器中加载转储文件。Windbg 有一个有用的!analyze命令,它将检查转储文件,并为您提供有关崩溃落入的存储桶以及可能的罪魁祸首的提示。还要检查有关错误检查的一般原因的 windbg 文档,以及您可以采取哪些措施来解决它。