我如何使用PDB文件

时间:2020-03-05 18:55:53  来源:igfitidea点击:

我听说使用PDB文件可以帮助诊断发生崩溃的位置。
我的基本理解是,我们为Visual Studio提供了源文件,pdb文件和崩溃信息(来自Watson博士?)
有人可以解释一下这一切如何/涉及到什么吗?
(谢谢!)

解决方案

回答

PDB文件将程序集的MSIL映射到原始源代码行。这意味着,如果将与程序集一起编译的PDB放在与程序集相同的目录中,则异常堆栈跟踪将具有原始源文件中位置的名称和行。没有PDB文件,我们将仅看到堆栈跟踪的每个级别的类和方法的名称。

回答

PDB文件是在生成项目时生成的。它们包含与Visual Studio可以解释的内置二进制文件有关的信息。

当程序崩溃并生成崩溃报告时,Visual Studio能够获取该报告并将其通过应用程序的PDB文件链接回源代码。 PDB文件必须使用生成崩溃报告的相同二进制文件构建!

随着时间的推移,我们遇到了一些问题。

  • 正在调试崩溃报告的计算机需要使源与构建二进制文件的计算机位于同一路径上。
  • 发布版本通常会优化到无法查看对象成员变量状态的程度

如果有人知道如何击败前者,我将不胜感激。

回答

我们应该研究设置符号服务器并将PDB文件索引到源代码控制系统。我最近刚刚针对我们的产品完成了此过程,并且效果很好。我们不必担心使PDB文件可与二进制文件一起使用,也不必担心调试转储文件时如何获取适当的源代码。

约翰·罗宾斯的书:http://www.amazon.com/Debugging-Microsoft-NET-2-0-Applications/dp/0735622027/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1222366012&sr=8-1

在此处查找一些用于生成小型转储的示例代码(不必局限于崩溃后分析-我们可以在代码中的任何时候生成它们,而不会崩溃):http://www.codeproject.com/KB/调试/postmortemdebug_standalone1.aspx