我如何使用PDB文件

ham*_*mcn 45 crash debugging pdb-files

我听说使用PDB文件可以帮助诊断崩溃发生的位置.
我的基本理解是你给Visual Studio提供源文件,pdb文件和崩溃信息(来自Dr Watson?)
有人可以解释一下它是如何工作的/涉及的内容?(谢谢!)

Ome*_*ten 39

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

  • +1:有关"程序数据库"(PDB)包含的内容的良好描述. (3认同)

roo*_*roo 34

构建项目时会生成PDB文件.它们包含与Visual Studio可以解释的构建二进制文件相关的信息.

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

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

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

如果有人知道如何打败前者,我会感激一些意见.

  • 帮助处理源文件路径的一种方法:使用SUBST将驱动器号映射到特定目录.http://technet.microsoft.com/en-us/library/bb491006.aspx (5认同)

les*_*ode 12

您应该考虑设置符号服务器并将PDB文件索引到源代码控制系统.我最近刚刚为我们的产品完成了这个过程,它运作良好.您不必担心使用二进制文件使PDB文件可用,也不必担心在调试转储文件时如何获取适当的源代码.

John Robbins的书: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 /debug/postmortemdebug_standalone1.aspx