在视觉工作室中,有一个名为" Optimize for debugging"在项目的链接器设置中:
默认设置为"优化调试(/ DEBUG)" ,即使是发布配置也是如此。这是为什么?这会以任何方式改变构建的程序吗?启用它是否有任何缺点(执行速度较慢?)?在发送程序之前,我应该将此选项设置为" No" 吗?或者只是启用/禁用生成.pdb-debug文件(=启用时编译时间较慢)?
答案 0 :(得分:3)
手头的问题是存储调试信息的地方。链接提供有源对象文件,这些文件带有调试信息。该信息不需要进入可执行文件。链接器有三个选项:
/DEBUG:NONE
)/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实际上会增加链接程序的时间。