8

更新:我在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。
  • 时间关键型软件。
  • 必须启用优化。
  • 源代码提供给客户,所以完整的符号就可以了。

生成我需要的东西的最佳命令行开关是什么,如果有的话,我将采取什么性能影响?

另外,是否有任何“陷阱”需要注意?

4

4 回答 4

6

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

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

于 2009-05-14T20:30:11.423 回答
6

更新:我在John Robbins博客上发表了一篇关于。他在这里写了一个回复:

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

我在 microsofts 网站上找到了以下链接: 使用 Microsoft Visual C++ 6.0 生成和部署调试符号

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

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

于 2009-05-16T00:03:55.193 回答
3

Visual C++ 中的/Zi开关将创建一个 PDB,但此设置还意味着会使 DLL 或 EXE 更大的其他设置。具体来说,/Zi暗含/DEBUG,暗含/INCREMENTAL/OPT:NOREF/OPT:NOICF。最后三个使编译的 DLL 或 EXE 更大,但可以通过指定/OPT:REF/OPT:ICF除了/Zi. 无需覆盖/INCREMENTAL,/OPT:REF和/或/OPT:ICF将确保完整的非增量链接。

来源:正确创建本机 C++ 版本构建 PDB

于 2019-05-01T00:35:25.013 回答
0

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

如果您在项目中找到设置,您可以使用帮助来查看它们引用了哪些命令行。

于 2009-05-14T20:57:32.963 回答