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