更新:我在John Robbins博客上发布了关于该帖子的评论。他在这里写了一个回复:
http://www.wintellect.com/CS/blogs/jrobbins/archive/2009/06/19/do-pdb-files-affect-performance.aspx
我正在处理的项目没有为其发布二进制文件构建符号,我想改变它。
一些信息:
什么是最好的命令行开关来生成我需要的,以及我将采取什么(如果有的话)性能?
此外,是否有任何“陷阱”需要注意?
感谢。
答案 0 :(得分:7)
答案 1 :(得分:6)
生成调试符号(即PDB文件)只是创建一个外部文件,调试器在查看内存中的代码时可以引用该文件。它不会影响编译器或链接器生成的代码(有点像生成.MAP文件)。
现在,如果您正在讨论在发布版本中定义_DEBUG,那就完全不同了。
答案 2 :(得分:5)
更新:我在John Robbins博客上发布了关于该帖子的评论。他在这里写了一个回复:
http://www.wintellect.com/CS/blogs/jrobbins/archive/2009/06/19/do-pdb-files-affect-performance.aspx
我在microsofts网站上找到以下链接: Generating and Deploying Debug Symbols with Microsoft Visual C++ 6.0
此链接适用于Visual C ++ 6,但我假设这些说明与Visual C ++ 8(2005)和9(2008)相同。
它提供的信息与TheBlack提供的链接非常相似,但更深入。
由于
答案 3 :(得分:1)
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
将确保完整的,非增量链接。
答案 4 :(得分:0)
我不知道命令行,但您需要在IDE中编译调试符号(程序数据库)和链接器(生成调试信息)。
如果在项目中找到设置,可以使用帮助查看它们引用的命令行。