如何在 Visual Studio 中调试/分析 BSOD 转储?

Posted

技术标签:

【中文标题】如何在 Visual Studio 中调试/分析 BSOD 转储?【英文标题】:How to debug / analyze BSOD dump in Visual Studio? 【发布时间】:2016-11-30 16:02:29 【问题描述】:

我有 BSOD,它在 C:\Windows\Minidump 中创建了 DMP 文件。然后我用 Visual Studion 打开这个文件,文件 -> 打开 -> 崩溃转储。它打开了一些东西,但看不到任何合理的东西。

这是开始分析故障转储的正确方法吗?

我应该在 VS 中看到什么?

我可以查看调用堆栈吗?

Debugger Immediate Window中出现以下内容:

WinDbg 也出现类似情况:

任何地方都不能输入任何键或命令。

【问题讨论】:

看起来符号仍在从 Microsoft 符号服务器加载。在这种情况下是否有任何网络流量?你等了多久了? (有时,符号加载完成需要几分钟。)如果File --> Symbol File Path 设置为SRV*http://msdl.microsoft.com/download/symbols,还要检查WinDbg。如果您想加快下一次调试会话的符号加载时间,您可以配置本地符号缓存。 !analyze -v 的输出太短。该命令尚未完成。你的符号路径是空的,所以先fix it。 【参考方案1】:

在 Windbg 中分析 dmp。通过Windows 10 SDK 获取 WinDbg。在安装过程中选择Debugging Tools for Windows

现在运行 Windbg.exe,加载 dmp,fix your debug symbol path 并运行 !analyze -v 到 start the automatic debugging。查看MSDN documentation STOP 代码的含义以及可用于更深入地调试问题的其他命令。

【讨论】:

看来OP已经安装/启动了WinDbg并加载了dmp。【参考方案2】:

根据此处文档中的“要求和限制”:https://msdn.microsoft.com/en-us/library/d5zhxt22.aspx,当发生内核模式错误时,Microsoft Windows 的默认行为是显示带有错误检查数据的蓝屏,以调试内核模式在 Visual Studio 2013 中转储文件,您需要下载 Windows 8.1 版本的 Windows 调试工具。

关于如何在 Microsoft Visual Studio 中执行内核模式调试:

https://msdn.microsoft.com/en-us/library/windows/hardware/hh451163(v=vs.85).aspx

关于如何使用Windbg工具调试windows转储文件,您可以在此处获取详细步骤:

http://timtrott.co.uk/debug-windows-crash-dumps-minidump/

就像haindl的建议,你必须从微软服务器下载符号。

【讨论】:

以上是关于如何在 Visual Studio 中调试/分析 BSOD 转储?的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2012 分析远程调试过程

Visual Studio调试之断点技巧篇

VS2015--win32工程配置的一些想法之在 Visual Studio 2015 中进行调试的同时分析性能

如何在 Microsoft Visual Studio 2019 中调试 nestjs 程序?

如何在 Visual Studio 代码中调试打字稿文件

如何在 Visual Studio 中调试单行函数?