使用"优化调试"会产生什么后果?启用?

时间:2017-06-09 10:18:19

标签: c++ visual-studio debugging visual-studio-2015

在视觉工作室中,有一个名为" Optimize for debugging"在项目的链接器设置中:

Project Debug Options

默认设置为"优化调试(/ DEBUG)" ,即使是发布配置也是如此。这是为什么?这会以任何方式改变构建的程序吗?启用它是否有任何缺点(执行速度较慢?)?在发送程序之前,我应该将此选项设置为" No" 吗?或者只是启用/禁用生成.pdb-debug文件(=启用时编译时间较慢)?

3 个答案:

答案 0 :(得分:3)

手头的问题是存储调试信息的地方。链接提供有源对象文件,这些文件带有调试信息。该信息不需要进入可执行文件。链接器有三个选项:

  • 只需忽略调试信息(/DEBUG:NONE
  • 即可
  • 以PDB文件(/DEBUG:FULL
  • 构建所有调试信息的数据库
  • 构建指向目标文件(/DEBUG:FASTLINK)的符号链接数据库。

现在,您看到的选项只是/DEBUG。这使用默认值,它在VS版本之间变化。对于您使用的VS2015,它意味着/DEBUG:FULL。您现在可以使用生成的PDB调试EXE,即使您没有目标文件。

答案 1 :(得分:3)

/DEBUG链接器选项有两个直接影响:链接时间以及通过程序数据库文件(.pdb)可用的信息量。

  • /DEBUG:FASTLINK缩短了链接时间,但只生成了部分.pdb' s。私有符号信息保留在编译产品(库和目标文件)中。当这些编译产品可用时(通常在调试已在本地计算机上构建的应用程序时),应使用此选项。
  • /DEBUG:FULL以(相当多)更长的链接时间为代价生成完整的.pdb。当您需要调试应用程序时,此选项非常有用,您无法访问编译产品(库和目标文件)。这通常在部署应用程序时使用,其中.pdb与源代码一起存储在SCM中。

通常使用以下设置:

  • 使用/DEBUG:FASTLINK进行调试构建。这减少了链接时间,并且部分.pdb不是问题,因为具有私有符号信息的编译产品可用。
  • /DEBUG:FULL用于即将部署的发布版本。这将生成调试已部署的应用程序所需的完整.pdb,其中包含私有符号信息的编译产品不再可用。
  • 请勿使用/DEBUG。此开关的含义在Visual Studio版本中已更改(对于VS 2015,默认为/DEBUG:FULL,对于VS 2017,默认为/DEBUG:FASTLINK)。以静默方式升级项目会更改此链接器设置的解释,这可能是不合需要的。

答案 2 :(得分:0)

您可以始终启用/ DEBUG。这允许在不更改项目设置的情况下调试应用程序。 .PDB文件的存在不会影响运行时性能。我不认为生成.PDB实际上会增加链接程序的时间。