背景
Visual Studio C++编译器有几个不同的调试标志,它们分别是:
- (无)
- 不创建任何调试信息
- 编译时间更快
- /Z7
- 使用CodeView格式在.obj文件中生成完整的符号调试信息
- /Zi
- 为目标生成一个.pdb文件中的完整符号调试信息,使用Program Database格式
- 启用对最小重建(/Gm)的支持,可以减少重新编译所需的时间。
- /ZI
- 生成类似于/Zi的调试信息,但支持编辑并继续
问题
/Gm标志与/MP标志不兼容,适用于多进程构建(Visual Studio 2005/2008)
如果要启用最小重建,则必须在/Z7标志上使用/Zi标志。
如果您将使用/MP标志,则在MSDN中查看/Z7和/Zi似乎没有区别。但是,SCons文档指出,您必须使用/Z7来支持并行构建。
问题
在Visual Studio C++项目中使用/Zi与/Z7有什么影响?
是否存在其他优缺点我漏掉的选项?
具体而言,目标的单个程序数据库格式(PDB)文件与每个源的多个CodeView格式(.obj)文件相比有什么好处?