程序数据库文件 (C++)

更新:2011 年 3 月

本主题适用于:

版本

Visual Basic

C#

F#

C++

Web Developer

学习版

主题不适用 主题不适用 主题不适用 主题适用 主题不适用

专业版、高级专业版和旗舰版

主题不适用 主题不适用 主题不适用

主题适用

主题不适用

程序数据库 (PDB) 文件保存着调试和项目状态信息,使用这些信息可以对程序的调试配置进行增量链接。 当以 /ZI 或 /Zi(用于 C/C++)生成时,将创建一个 PDB 文件。

在 Visual C++ 中,/Fd 选项用于命名由编译器创建的 PDB 文件。 当使用向导在 Visual Studio 中创建项目时,/Fd 选项被设置为创建一个名为 project.PDB 的 PDB。

如果使用生成文件创建 C/C++ 应用程序,并指定 /ZI/Zi 而不指定 /Fd 时,则最终将生成两个 PDB 文件:

  • VC80.PDB   (更笼统地说就是 VCx0.PDB,其中 x 表示 Visual C++ 的版本。)该文件存储各个 OBJ 文件的所有调试信息并与项目生成文件驻留在同一个目录中。

  • project.PDB   该文件存储 .exe 文件的所有调试信息。 对于 C/C++,它驻留在 \debug 子目录中。

每当创建 OBJ 文件时,C/C++ 编译器都将调试信息合并到 VCx0.PDB 中。 插入的信息包括类型信息,但不包括函数定义等符号信息。 因此,即使每个源文件都包含公共头文件(如 <windows.h>),这些头文件中的 typedef 也只存储一次,而不是在每个 OBJ 文件中都存在。

链接器将创建 project.PDB,它包含项目的 EXE 文件的调试信息。 project.PDB 文件包含完整的调试信息(包括函数原型),而不仅仅是在 VCx0.PDB 中找到的类型信息。 这两个 PDB 文件都允许增量更新。 链接器还在其创建的 .exe 或 .dll 文件中嵌入 .pdb 文件的路径。

Visual Studio 调试器使用 EXE 或 DLL 文件中的 PDB 路径查找 project.PDB 文件。 如果调试器在该位置无法找到 PDB 文件或者如果路径无效(例如,如果项目被移动到了另一台计算机上),调试器将搜索包含 EXE 的路径,即在**“选项”对话框(“调试”文件夹,“符号”节点)中指定的符号路径。 如果调试器无法找到 .PDB 文件,则显示“查找符号”**对话框,这将允许您搜索符号或向搜索路径添加其他位置。

重要说明重要事项

调试器只会为二进制文件加载与该二进制文件生成之时所创建的 PDB 完全相符的 PDB(就是说,该 PDB 必须是原 PDB 或其副本)。 因为编译器在创建二进制文件时会考虑多种因素,所以,即使代码自身没有变化,二进制文件的实际布局也可能会有变化。 有关更多信息,请参见 MSDN 博客文章为什么 Visual Studio 要求调试器符号文件须与同时生成的二进制文件完全匹配?

请参见

概念

程序数据库文件(C#、F# 和 Visual Basic)

其他资源

调试设置和准备

修订记录

日期

修订记录

原因

2011 年 3 月

添加了关于完全匹配 PDB 要求的信息和链接。

信息补充。