在 VS C++ 中使用 dll、pdb 文件和源代码进行调试

Posted

技术标签:

【中文标题】在 VS C++ 中使用 dll、pdb 文件和源代码进行调试【英文标题】:Debug in VS C++ with dll, pdb files and source 【发布时间】:2012-06-21 11:39:28 【问题描述】:

关于 pdb 文件的问题。是用于在 Visual Studio 中调试的 pdb 文件吗?如果是这样,为什么它们也存在于我的 Release 文件夹中? pdb文件在Debug文件夹是正常的,但为什么它们也在Release文件夹中。

所以我现在有一个由集成团队构建的 Release 文件夹,其中包含所有 pdb 文件。现在我可以加载所有相应的源(在 GIT 中),所以我确定二进制文件对应于源。那么我是否需要重新构建才能在 Visual Studio 中进行调试?如果没有,我必须做什么才能快速完成工作?

【问题讨论】:

【参考方案1】:

如上所述,PDB 与发布二进制文件一样重要!软件发布后,您可以在之后对其进行调试(取决于公共符号和私有符号是否可用)。如果 PDB 包含私有符号,请记住这些描述了您的代码(参数、类型、返回值、符号......)。 Here an article 解释可执行文件与其 PDB 之间存在的逻辑链接。

【讨论】:

【参考方案2】:

实际上,如果您有 PDB 文件,您也可以调试您的发布版本。因此,最好保留已交付产品(发布版本)的 PDB 文件。 对于调试,您需要可执行文件和匹配的 PDB 以及匹配的源文件。就是这样。

【讨论】:

@mbaros:PDB 在编译时附加到可执行文件。调试器搜索原始路径。如果没有找到,它会直接在可执行文件所在的文件夹中搜索。【参考方案3】:

您也可以调试发布版本,只是因为所有额外的优化,它并没有那么有用。如果您不需要 pdb 文件,您可以在发布版本的项目属性中指定它。

【讨论】:

【参考方案4】:

在 Visual Studio 中是用于调试的 pdb 文件吗? 是的。

为什么它们也存在于我的 Release 文件夹中? 转到“您的项目”属性页(目标版本)-> 链接器-> 调试。 设置选项生成程序数据库文件。即 Release/myExe.pdb

【讨论】:

以上是关于在 VS C++ 中使用 dll、pdb 文件和源代码进行调试的主要内容,如果未能解决你的问题,请参考以下文章

VS2010 C++ 不包含 .pdb 的路径是我根据 dumpbin 编译的 .dlls

Visual Studio 2019 VS的.pdb文件是什么?(用于调试)

Visual Studio 2019 VS的.pdb文件是什么?(用于调试)

.pdb文件的使用方法

C++ 调试问题 - pdb 文件

VS2012 每次编译程序都会出现3个无法查找或打开 PDB 文件。