【问题标题】:How do I use PDB files如何使用 PDB 文件
【发布时间】:2010-09-09 11:35:38
【问题描述】:

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

【问题讨论】:

标签: debugging crash pdb-files


【解决方案1】:

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

【讨论】:

  • +1:为了更好地描述“程序数据库”(PDB)所包含的内容。
【解决方案2】:

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

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

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

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

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

【讨论】:

  • 帮助处理源文件路径的一种方法:使用 SUBST 将驱动器号映射到特定目录。 technet.microsoft.com/en-us/library/bb491006.aspx
  • 我见过的大多数调试器也允许您输入任意路径替换 - 但可能在 Visual Studio 中不可用。从未尝试过,但这是调试别人编译的程序通常需要做的事情之一。
【解决方案3】:

您应该考虑设置符号服务器并将 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/debug/postmortemdebug_standalone1.aspx

【讨论】:

  • 关于如何设置源符号服务器的好链接!我可能只是这样做。为链接 +1。
猜你喜欢
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-03
  • 1970-01-01
  • 1970-01-01
  • 2011-01-27
相关资源
最近更新 更多