技术扫盲 程序数据库 (PDB) 文件

技术扫盲 程序数据库 (PDB) 文件

程序 数据库   (PDB)  文件 保存着调试和 项目 状态信息,使用这些信息 可以 对程序的调试配置进行增量 链接 。当用 /ZI 或 /工Zi 编译 C/C++ 程序时或用 /de bug   编译 Visual Basic/C#/J Script   .NET   程序时将创建 PDB 文件。 

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

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

VC 70.PDB (更笼统地说就是 VCx0.PDB,其中 x 表示 Visual C++ 的版本。)该 文件存储 各个 OBJ 文件的所有调试信息并与项目生成文件驻留在同一个目录中。 
project.PDB 该文件 存储   .exe 文件的所有调试信息。对于本机代码,它驻留在 \debug  子目录 中。对于托管代码,它驻留在 \W IN DEBUG 子目录中。 
每当创建 OBJ 文件时,C/C++ 编译器都将调试信息合并到 VCx0.PBD 中。插入的信息包括类型信息,但不包括函数 定义 等符号信息。因此,即使每个源文件都包含公共头文件(如 < window s.h>),这些头文件中的 typedef 也只存储 一次 ,而不是在每个 OBJ 文件中都存在。 

链接器将创建 project.PDB,它包含项目的 EXE 文件的调试信息。project.PDB 包含完整的调试信息(包括函数原型),而不仅仅是 VCx0.PDB 中的类型信息。这两个 PDB 文件都允许增量 更新  

Visual Studio 调试器使用由链接器直接创建的 project.PDB 文件并将此 PDB 的 绝对路径 嵌入到 EXE 或 DLL 文件中。如果调试器在该位置无法找到 PDB 文件或者如果 路径 无效(例如,如果项目被 移动 到了另一台 计算机 上),调试器将 搜索 包含 EXE 的路径,即在 解决 方案的“属性页”中指定的“符号路径”(“调试符号文件”页 ->“通用属性”文件夹)。调试器不会加载与所调试的二进制不匹配的 PDB。

你可能感兴趣的:(数据库)