Visual Studio 2017编译选项Debug的用法

目录

 

概要

具体选项

注意事项

在Visual Studio中设置/DEBUG链接选项

以编程方式设置/DEBUG链接选项

相关内容

原文链接


概要

/DEBUG选项为可执行文件创建调试信息。链接器将调试信息放入程序数据库(PDB)文件中。它在程序的后续构建期间更新PDB。

用于调试而生产的可执行文件(.exe文件或DLL)包含相应PDB文件的名称和路径。在调试程序时,调试器将读取嵌入的名称并使用PDB文件。链接器使用程序的基本名称和扩展名.pdb命名程序数据库,并将其创建路径嵌入其中。要覆盖此默认值,请设置/PDB并指定其他文件名。

具体选项

/DEBUG:FASTLINK 选项在Visual Studio 2017和更高版本中可用。该选项将专用符号信息留在用于生成可执行文件的各个编译产品中。它会生成一个有限的PDB,该PDB可以索引用于构建可执行文件的目标文件和库中的调试信息,而不是进行完整复制。此选项的链接速度是完整PDB生成速度的两倍至四倍,当在本地调试并提供可用的构建产品时,建议使用此选项。当所需的生成产品不可用时(例如,将可执行文件部署在另一台计算机上时),该有限的PDB不能用于调试。在开发人员命令提示符下,您可以使用mspdbcmf.exe工具从此有限的PDB生成完整的PDB。在Visual Studio中,使用“项目”或“生成”菜单项来生成完整的PDB文件,以为项目或解决方案创建完整的PDB。

/DEBUG:FULL 选项将所有私有符号信息从单个编译产品(目标文件和库)移到单个PDB中。这可能是链接中最耗时的部分。但是,当没有其他构建产品可用时(例如,部署可执行文件时),可以使用完整的PDB调试可执行文件。

/DEBUG:NONE 选项不生成PDB文件。

注意事项

如果不带其他选项指定/DEBUG,则对于命令行和Makefile构建,Visual Studio IDE中的发行版本以及Visual Studio 2015及更早版本中的调试和发行版本,链接器默认为/ DEBUG:FULL。从Visual Studio 2017开始,当您指定调试构建的/DEBUG选项时,IDE中的构建系统默认为/ DEBUG:FASTLINK。其他默认值未更改,以保持向后兼容性。

编译器的C7兼容(/Z7)选项使编译器将调试信息保留在.obj文件中。您还可以使用“程序数据库(/Zi)”编译器选项将调试信息存储在.obj文件的PDB中。链接器首先在.obj文件中编写的绝对路径中查找对象的PDB,然后在包含.obj文件的目录中查找该对象的PDB。您不能为链接器指定对象的PDB文件名或位置。

当指定/DEBUG时,暗含/INCREMENTAL。

/DEBUG将/OPT选项的默认值从REF更改为NOREF,从ICF更改为NOICF,因此,如果要使用原始默认值,则必须显式指定/OPT:REF或/OPT:ICF。

无法创建包含调试信息的.exe或.dll。调试信息总是放在.obj或.pdb文件中。

在Visual Studio中设置/DEBUG链接选项

  1. 打开项目的“属性页”对话框。有关详细信息,请参见Set C++ compiler and build properties in Visual Studio
  2. 单击“链接器”。
  3. 单击“调试”属性页。
  4. 修改“生成调试信息”属性以启用PDB生成。默认情况下,这会在Visual Studio 2017和更高版本中启用/DEBUG:FASTLINK。
  5. 修改“生成完整程序数据库文件”属性,以启用/DEBUG:FULL为每个增量构建的完整PDB生成。

以编程方式设置/DEBUG链接选项

请参阅GenerateDebugInformation

相关内容

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

原文链接

https://docs.microsoft.com/en-us/cpp/build/reference/debug-generate-debug-info?view=msvc-150

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值