使用Visual Studio在发布二进制文件中生成符号

问题描述 投票:7回答:5

更新:我发布了关于John Robbins博客的评论。他在这里写了一个回复:

http://www.wintellect.com/CS/blogs/jrobbins/archive/2009/06/19/do-pdb-files-affect-performance.aspx

我正在处理的项目没有为其发布二进制文件构建符号,我想改变它。

一些信息:

  • 主要是C ++代码库,有些是C#。
  • 在VS2k5下编译,将转移到VS2k8 Team System。
  • 时间关键软件。
  • 必须启用优化。
  • 源代码提供给客户,因此完整的符号是好的。

什么是最好的命令行开关来生成我需要的,以及我将采取什么(如果有的话)性能命中?

此外,还有任何“陷阱”需要注意吗?

c++ visual-studio debugging symbols
5个回答

6
投票

生成调试符号(即PDB文件)只是创建一个外部文件,调试器在查看内存中的代码时可以引用该文件。它不会影响编译器或链接器生成的代码(有点像生成.MAP文件)。

现在,如果您正在讨论在发布版本中定义_DEBUG,那就是一个完全不同的问题。


5
投票

更新:我发布了关于John Robbins博客的评论。他在这里写了一个回复:

http://www.wintellect.com/CS/blogs/jrobbins/archive/2009/06/19/do-pdb-files-affect-performance.aspx

我在微软的网站上找到了以下链接:qazxsw poi

此链接适用于Visual C ++ 6,但我假设这些说明与Visual C ++ 8(2005)和9(2008)相同。

它提供的信息与TheBlack提供的链接非常相​​似,但更深入。


1
投票

Visual C ++中的Generating and Deploying Debug Symbols with Microsoft Visual C++ 6.0开关将创建一个PDB,但此设置还意味着将使DLL或EXE更大的其他设置。具体来说,/Zi暗示/Zi,暗示/DEBUG/INCREMENTAL/OPT:NOREF。最后三个使编译的DLL或EXE更大,但除了/OPT:NOICF之外,还可以通过指定/OPT:REF/OPT:ICF来覆盖它们。没有必要覆盖/Zi,因为/INCREMENTAL和/或/OPT:REF将确保完整的非增量链接。

资料来源:/OPT:ICF


0
投票

我不知道命令行,但您需要在IDE中的c ++编译器配置(程序数据库)和链接器(生成调试信息)中设置调试符号。

如果在项目中找到设置,则可以使用帮助查看它们引用的命令行。

© www.soinside.com 2019 - 2024. All rights reserved.