/DEBUG(生成调试信息)

/DEBUG 链接器选项将为可执行文件创建调试信息文件。

语法

/DEBUG[:{FASTLINK|FULL|NONE}]

注解

/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 开发环境中设置此链接器选项

  1. 打开项目的“属性页” 对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性

  2. 选择“链接器”>“调试”属性页。

  3. 修改“生成调试信息”属性,以启用或禁用 PDB 生成。 在 Visual Studio 2017 及更高版本中,此属性默认启用 /DEBUG:FASTLINK

  4. 修改“生成完整程序数据库文件”属性,从而为每个增量生成的完的 PDB 生成启用 /DEBUG:FULL

以编程方式设置此链接器选项

  1. 请参阅 GenerateDebugInformation

另请参阅

MSVC 链接器参考
MSVC 链接器选项