/Z7、/Zi、/ZI(/Z{7|i|I})
Z7 .obj文件中生成调试信息(Debug Info),不生成.pdb文件
/Zi 调试信息(Debug Info)生成.pdb文件
/ZI 在/Zi的基础上,扩展了在代码调试中直接编辑代码,继续调试功能(VC++默认选项)
详细参考下文
/Z7、/Zi、/ZI (デバッグ情報の形式)
作成するプログラムに対して生成するデバッグ情報の種類を選択し、デバッグ情報をオブジェクト (.obj) ファイルに保存するのかプログラム データベース (PDB) に保存するのかを選択します。
構文
/Z{7|i|I}
解説
/Z7
デバッガーで使用される詳細なシンボリック デバッグ情報が含まれた .obj ファイルが作成されます。 シンボリック デバッグ情報には、変数や関数の名前と型、および行番号が含まれます。 .pdb ファイルは作成されません。
サードパーティのライブラリを配布する場合は、.pdb ファイルを持たないことによる利点があります。 ただし、プリコンパイル済みヘッダーの .obj ファイルは、リンク フェーズおよびデバッグで必要です。 .pch オブジェクト ファイルに型情報だけがある (コードはない) 場合は、/Yl (デバッグ ライブラリの PCH 参照の挿入) も指定してコンパイルする必要があります。
/Zi
プログラム データベース (PDB) が生成されます。PDB には、型情報とデバッガーが使うシンボリック デバッグ情報が取り込まれます。 シンボリック デバッグ情報には、変数や関数の名前と型、および行番号が含まれます。
/Zi は最適化に影響しません。 ただし、/Zi を指定すると /debug が暗黙に指定されます。詳細については、「/DEBUG (デバッグ情報の生成)」を参照してください。
型情報は、.obj ファイルではなく .pdb ファイルに配置されます。
/Gm (簡易リビルドの有効化) は /Zi と併用できますが、/Gm は、/Z7 を指定してコンパイルする場合は利用できません。
/Zi および /clr を指定してコンパイルする場合、DebuggableAttribute 属性はアセンブリ メタデータに配置されません。配置する場合はソース コードで指定する必要があります。 この属性は、アプリケーションの実行時パフォーマンスに影響します。 Debuggable 属性によるパフォーマンスへの影響とその対処方法の詳細については、「イメージのデバッグの簡略化」を参照してください。
/ZI
エディット コンティニュ機能をサポートする形式で、上のようなプログラム データベースを生成します。 エディット コンティニュのデバッグを使用する場合は、必ずこのオプションを使用してください。 ほとんどの最適化処理はエディット コンティニュと互換性がないため、/ZI を使用すると、コードの #pragma optimize ステートメントが無効になります。
/ZI を指定すると、コンパイルで /Gy (関数レベルのリンクの有効化) および /FC (診断時のソース コード ファイルの完全パス) が使用されます。