/DEBUG
(生成调试信息)
/DEBUG
链接器选项将为可执行文件创建调试信息文件。
语法
.- .
注解
/DEBUG
选项将链接对象和库文件中的调试信息放入程序数据库 (PDB) 文件中。 它会在程序的后续生成期间更新 PDB。
为调试创建的可执行文件(EXE 或 DLL 文件)包含相应 PDB 的名称和路径。 调试器可读取嵌入的名称,并在你调试程序时使用 PDB。 链接器使用程序的基名称和扩展名 .pdb
来对程序数据库命名,并嵌入其创建路径。 要替代此默认值,请设置 /PDB
/ 并指定其他文件名。
/DEBUG:FASTLINK
选项在 Visual Studio 2017 及更高版本中提供。 此选项生成一个有限的 PDB,它索引到用于生成可执行文件的对象文件和库中的调试信息,而不是生成完整的副本。 只能使用这个有限的 PDB 从生成二进制文件及其库的计算机进行调试。 如果在其他位置部署二进制文件,可以从生成计算机远程调试它,但不能直接在测试计算机上对其进行调试。 自 Visual Studio 2019 以来,/DEBUG:FULL
链接时间显著改善,并且 /DEBUG:FASTLINK
并不总是比 /DEBUG:FULL
快。 由于与 /DEBUG:FULL
相比,/DEBUG:FASTLINK
不再提供显著的编译时间改进并导致体验到的调试速度变慢,因此不再建议使用此选项。
可将 /DEBUG:FASTLINK
PDB 转换为 完整 PDB,你可将完整 PDB 部署到测试计算机来进行本地调试。 在 Visual Studio 中,按如下所述使用“属性页”对话框,为项目或解决方案创建完整的 PDB。 在开发人员命令提示符中,可以使用 mspdbcmf.exe
工具创建完整 PDB。
/DEBUG:FULL
选项可将所有专用符号信息从单个编译产品(对象文件和库)移动到单个 PDB 中,并且是链接中最耗时的部分。 但是,没有其他可用的生成产品时,例如部署可执行文件时,完整的 PDB 可用于调试可执行文件。
/DEBUG:NONE
选项不会生成 PDB。
指定不带额外参数的 /DEBUG
相当于指定 /DEBUG:FULL
。
编译器的 /Z7
(C7 兼容)选项会使编译器将调试信息保留在对象 (OBJ) 文件中。 还可使用/Zi
(程序数据库)编译器选项,以将调试信息存储在 OBJ 文件的 PDB 中。 链接器首先在写入 OBJ 文件的绝对路径中查找对象的 PDB,然后在包含 OBJ 文件的目录中进行查找。 无法为链接器指定对象的 PDB 文件名或位置。
指定 /DEBUG
时隐式使用 /INCREMENTAL
。
/DEBUG
将 /OPT
选项的默认值从 REF
更改为 NOREF
,并从 ICF
更改为 NOICF
,这样如果需要原始默认值,必须在 /DEBUG
选项之后显式指定 /OPT:REF
或 /OPT:ICF
。
不能创建包含调试信息的 EXE 或 DLL。 调试信息将始终放置在 OBJ 或 PDB 文件中。
在 Visual Studio 开发环境中设置此链接器选项
打开项目的“属性页” 对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性。
选择“链接器”>“调试”属性页。
修改“生成调试信息”属性,以启用或禁用 PDB 生成。 在 Visual Studio 2017 及更高版本中,此属性默认启用
/DEBUG:FASTLINK
。修改“生成完整程序数据库文件”属性,从而为每个增量生成的完的 PDB 生成启用
/DEBUG:FULL
。