文章目录
- 一、简介
- 二、问答
- 三、Release中删除pdb文件
- 四、重要事项
一、简介
英文全称:Program Database File
中文全称:程序数据库 文件
程序数据库 (PDB)
文件保存着调试和项目状态信息,使用这些信息可以对程序的调试配置进行增量链接。
在使用 /debug 生成时,会创建一个 PDB 文件。
可以使用 /debug:full 或 /debug:pdbonly 生成应用程序。
使用 /debug:full 生成将产生可调试的代码。
使用 /debug:pdbonly 生成将产生 PDB,但是不会产生通知 JIT 编译器调试信息可用的 DebuggableAttribute。
Visual Studio 调试器使用 EXE 或 DLL 文件中的 PDB 路径查找 project.pdb 文件。 如果调试器无法在该位置找到 PDB 文件,或者该路径无效,调试器将先搜索包含 EXE 的路径,然后搜索“选项”对话框中指定的符号路径。 该路径通常是“符号”节点中的“调试”文件夹。 如果调试器无法找到 .PDB 文件,则显示“查找符号”对话框,这将允许您搜索符号或向搜索路径添加其他位置。
二、问答
问:Debug里有pdb,Release里也有pdb,他们有什么不同呢?为什么很多人都不喜欢pdb,欲除之而后快?
答:
- Debug里的PDB是full,保存着调试和项目状态信息、有断言、堆栈检查等代码。
- Release 里的PDB是pdb-only,基本上:出什么错了+错误在哪行。
三、Release中删除pdb文件
因为很多人把PDB理解成:调试文件、Program Debug Database、会泄露代码机密,所以想将其删除。
那只要在VS设置如下: 项目–>生成–>高级–>调试信息–>None。
四、重要事项
调试器只会为二进制文件加载与该二进制文件生成之时所创建的 PDB 完全相符的 PDB。
就是说,该 PDB 必须是原 PDB 或其副本。 因为编译器在创建二进制文件时会考虑多种因素,所以,即使代码自身没有变化,二进制文件的实际布局也可能会有变化。