在 Visual Studio 中分析故障转储

Posted

技术标签:

【中文标题】在 Visual Studio 中分析故障转储【英文标题】:Analyzing Crash dumps in Visual Studio 【发布时间】:2012-08-28 11:01:24 【问题描述】:

我有一个崩溃的应用程序的*.dmp(转储)文件。现在,我想分析另一台机器上的崩溃进程。也就是说,应用程序在一台机器上崩溃了,而我在另一台机器上安装了 Visual Studio。

现在,我需要什么才能看到堆栈跟踪和我的应用程序的所有符号? *.exe 文件和*.dmp 文件是否足够?

或者我还需要源代码和 PDB 文件吗?

如果是这样,源代码和可执行文件是否应该放在与进程正在运行的机器上相同的目录结构中?

如何在 Visual Studio 中将 PDB 文件附加到故障转储文件?

【问题讨论】:

【参考方案1】:

不,您肯定需要 .pdb 文件才能获得良好的堆栈跟踪。到目前为止,最简单的方法是在您构建程序的机器上执行此操作,源代码和 .pdb 文件将位于正确的位置。

接下来最好的办法是将完全相同的可执行文件复制到故障计算机上安装它的完全相同的文件夹中。将 .pdb 文件复制到同一个目录中,如果在原始构建位置找不到它们,调试器接下来会在该目录中查找它们。一旦调试器到达带有源代码的语句并且 .pdb 没有被剥离,它就会提示您提供源代码文件的位置。

下一个最好的方法是工具 + 选项、调试、符号并将路径添加到包含 .pdb 文件的目录。

在同一个对话框中,还打开 Microsoft 符号服务器 (http://msdl.microsoft.com/download/symbols)。这将为您获取 Windows DLL 的符号,并让您在 Windows DLL 中发生崩溃时准确地追溯到您自己的代码。

【讨论】:

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

如何在 Visual Studio 2008 中分析 MsTest 的单元测试?

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

如何从核心转储中分析内存使用情况?

故障转储 - WinDbg - 强制 PDB 文件匹配不起作用?

如何在 Android Studio 中分析测试?

Visual Studio 性能分析:Application.DoEvents()