打开此项目的“属性页”对话框。web
单击“C/C++”文件夹。数据库
单击“常规”属性页。函数
修改“调试信息格式”属性。性能
该选项的设置:优化
主要是选择为程序建立的调试信息的类型,并选择是将此信息保存在对象 (.obj) 文件仍是程序数据库 (PDB) 中。spa
/Z{7|i|I}
下表描述了这些选项。debug
无调试
不产生任何调试信息,所以编译较快。code
/Z7orm
生成包含用于调试器的完整符号调试信息的 .obj 文件。符号调试信息包括变量的名称和类型以及函数和行号。不会生成任何 .pdb 文件。
对于第三方库的发布者,不生成 .pdb 文件是一个优势。可是,在连接和调试期间,用于预编译头的 .obj 文件是必需的。若是 .pch 对象文件中只有类型信息(没有代码),则还必须使用 /Yl(为调试库插入 PCH 引用) 进行编译。
/Zi
产生包含用于调试器的类型信息和符号调试信息的程序数据库 (PDB)。符号调试信息包括变量的名称和类型以及函数和行号。
/Zi 不影响优化。可是,/Zi 的确暗示了 /debug;有关更多信息,请参见 /DEBUG(生成调试信息)。
类型信息放置在 .pdb 文件而不是 .obj 文件中。
能够将 /Gm(启用最小从新生成) 和 /Zi 结合使用,但使用 /Z7 编译时不能使用 /Gm。
使用 /Zi 和 /clr 编译时,DebuggableAttribute 属性将不会被放入程序集元数据中;若是要使用该属性,则必须在源代码中指定它。该属性可影响应用程序的运行时性能。有关 Debuggable 属性如何影响性能以及如何减轻性能影响的更多信息,请参见令映像更易于调试。
/ZI
以支持“编辑并继续”功能的格式产生如上所述的程序数据库。若是想使用“编辑并继续”调试,则必须使用此选项。由于大多数优化与“编辑并继续”不兼容,因此使用 /ZI 会禁用代码中的全部 #pragma optimize 语句。
/ZI 会致使在编译中使用 /Gy(启用函数级连接)。
/ZI 与 /clr(公共语言运行库编译) 不兼容。
![]() |
---|
/ZI 只可用于面向 x86 的编译器中;此编译器选项不可用于面向 x64 或 Itanium 处理器系列 (IPF) 的编译器中。 |
编译器将程序数据库命名为 project.pdb。若是编译没有项目的文件,则编译器将建立名为 VCx0.pdb. 的数据库,其中 x 是正在使用的 Visual C++ 的主版本。编译器将 PDB 的名称嵌入每一个使用此选项建立的 .obj 文件中,从而使调试器了解符号和行号信息的位置。当使用此选项时,.obj 文件将较小,由于调试信息存储在 .pdb 文件中而不是 .obj 文件中。
若是从使用此选项编译的对象建立库,则在将库连接到程序时,关联 .pdb 文件必须可用。所以,若是发布此库,就必须发布 PDB。
若要不使用 .pdb 文件建立包含调试信息的库,必须选择编译器的 C 7.0 兼容 (/Z7) 选项。若是使用预编译头选项,则预编译头和其余源代码的调试信息都放在 PDB 中。指定了“程序数据库”选项时将忽略 /Yd选项。