/Z7、/Zi、/ZI (デバッグ情報の形式)/Z7, /Zi, /ZI (Debug Information Format)

オブジェクト ファイルまたはプログラム データベース (PDB) ファイルにこの情報を保持するかどうかのプログラム用に作成されるデバッグ情報の種類を指定します。Specifies the type of debugging information created for your program and whether this information is kept in object files or in a program database (PDB) file.

構文Syntax

/Z{7|i|I}/Z{7|i|I}

RemarksRemarks

コードがコンパイルされ、デバッグ モードで構築された、ときに、コンパイラは関数と変数、型情報、および行番号の場所、デバッガーで使用するためのシンボル名を生成します。When code is compiled and built in debug mode, the compiler produces symbol names for functions and variables, type information, and line number locations for use by the debugger. このシンボリック デバッグ情報をコンパイラによって生成されたオブジェクト ファイル (.obj ファイル) または実行可能ファイルの別の PDB ファイル (.pdb ファイル) に含まれることはできます。This symbolic debugging information can be included either in the object files (.obj files) produced by the compiler, or in a separate PDB file (a .pdb file) for the executable. デバッグ情報の形式オプションは、次のセクションで説明します。The debug information format options are described in the following sections.

なしNone

既定では、デバッグ情報の形式オプションが指定されていない場合、コンパイラが生成されないデバッグについては、ためコンパイルが高速です。By default, if no debug information format option is specified, the compiler produces no debugging information, so compilation is faster.

/Z7/Z7

/Z7オプションも、デバッガーで使用するための完全なシンボリック デバッグ情報が含まれているオブジェクト ファイルが生成されます。The /Z7 option produces object files that also contain full symbolic debugging information for use with the debugger. これらのオブジェクト ファイルとビルドの実行可能ファイルは、デバッグ情報のないファイルよりも大幅に拡大できます。These object files and the built executable can be substantially larger than files that have no debugging information. シンボリック デバッグ情報には、変数や関数の名前と型、および行番号が含まれます。The symbolic debugging information includes the names and types of variables, as well as functions and line numbers. PDB ファイルは生成されません。No PDB file is produced.

サード パーティ製ライブラリのデバッグ バージョンのディストリビューターの場合、PDB ファイルを持たないことによる利点があります。For distributors of debug versions of third-party libraries, there is an advantage to not having a PDB file. ただし、プリコンパイル済みヘッダーのオブジェクト ファイルは、ライブラリのリンク フェーズ中、およびデバッグに必要です。However, the object files for any precompiled headers are necessary during the library link phase, and for debugging. 使用する必要がある .pch オブジェクト ファイルの情報 (とコードなし) を入力のみが場合、 /Yl (挿入 PCH 参照のライブラリのデバッグ)オプションは、ライブラリをビルドするときに、既定で有効にします。If there is only type information (and no code) in the .pch object file, you must also use the /Yl (Inject PCH Reference for Debug Library) option, which is enabled by default, when you build the library.

非推奨とされる/Gm (簡易リビルドの有効)場合オプションは使用できません /Z7を指定します。The deprecated /Gm (Enable Minimal Rebuild) option is not available when /Z7 is specified.

/ZI/Zi

/Ziオプションはすべて、シンボリック デバッグ情報を格納用に、デバッガーで別の PDB ファイルを生成します。The /Zi option produces a separate PDB file that contains all the symbolic debugging information for use with the debugger. オブジェクト ファイルにデバッグ情報が含まれていないか、実行可能なものになりますかなり小さくなります。The debugging information is not included in the object files or executable, which makes them much smaller.

使用 /Ziの最適化には影響しません。Use of /Zi does not affect optimizations. ただし、 /Ziわけでは /debug; を参照してください/DEBUG (デバッグ情報の生成)詳細についてはします。However, /Zi does imply /debug; see /DEBUG (Generate Debug Info) for more information.

両方を指定すると /Zi/clrDebuggableAttribute属性がアセンブリのメタデータには配置されません。When you specify both /Zi and /clr, the DebuggableAttribute attribute is not placed in the assembly metadata. 場合は、ソース コードで指定する必要があります。If you want it, you must specify it in the source code. この属性は、アプリケーションの実行時パフォーマンスに影響します。This attribute can affect the runtime performance of the application. 方法の詳細についてはDebuggable属性がパフォーマンスに影響し、パフォーマンスに与える影響を変更する方法を参照してください。デバッグをイメージの簡略化するします。For more information about how the Debuggable attribute affects performance and how you can modify the performance impact, see Making an Image Easier to Debug.

PDB ファイルの名前、コンパイラプロジェクト.pdb。The compiler names the PDB file project.pdb. プロジェクトの外側でファイルをコンパイルする場合、コンパイラは、VC をという名前の PDB ファイルを作成x、.pdb、 xは使用中で、コンパイラのバージョンのメジャーおよびマイナー バージョン番号の連結になります。If you compile a file outside of a project, the compiler creates a PDB file named VCx.pdb, where x is a concatenation of the major and minor version number of the compiler version in use. コンパイラは、このオプションは、デバッガーを指すシンボリックと行番号の情報の場所を使用して作成された各オブジェクト ファイル内の名前、PDB と識別のタイムスタンプの署名を埋め込みます。The compiler embeds the name of the PDB and an identifying timestamped signature in each object file created using this option, which points the debugger to the location of symbolic and line-number information. PDB ファイル内の署名と名前は、デバッガーに読み込まれるシンボルの実行可能ファイルと一致する必要があります。The name and signature in the PDB file must match the executable for symbols to be loaded in the debugger. WinDBG デバッガーを使用して一致しないシンボルを読み込むことができます、.symopt+0x40コマンド。The WinDBG debugger can load mismatched symbols by using the .symopt+0x40 command. Visual Studio には、一致しないシンボルを読み込むようなオプションはありません。Visual Studio does not have a similar option to load mismatched symbols.

使用してコンパイルされたオブジェクトからライブラリを作成するかどうかは /Ziプログラムにライブラリがリンクされている場合に、関連付けられた .pdb ファイルが使用可能なにある必要があります。If you create a library from objects that were compiled using /Zi, the associated .pdb file must be available when the library is linked to a program. したがって、ライブラリを配布する場合は、PDB ファイルも配布する必要があります。Thus, if you distribute the library, you must also distribute the PDB file. PDB ファイルを使用せずにデバッグ情報を含むライブラリを作成することを選択する必要があります、 /Z7オプション。To create a library that contains debugging information without using PDB files, you must select the /Z7 option. プリコンパイル済みヘッダー オプションを使用すると、PDB ファイルでプリコンパイル済みヘッダーとソース コードの残りの部分の両方のデバッグ情報は配置されます。If you use the precompiled headers options, debugging information for both the precompiled header and the rest of the source code is placed in the PDB file.

/ZI/ZI

/ZIオプションはのような /Ziをサポートする形式での PDB ファイルが生成されますが、エディット コンティニュ機能します。The /ZI option is similar to /Zi, but it produces a PDB file in a format that supports the Edit and Continue feature. エディット コンティニュのデバッグ機能を使用するには、このオプションを使用する必要があります。To use Edit and Continue debugging features, you must use this option. エディット コンティニュの機能は開発者の生産性、便利ですが、サイズ、パフォーマンス、およびコンパイラの準拠をコードで問題が発生することができます。The Edit and Continue feature is useful for developer productivity, but can cause issues in code size, performance, and compiler conformance. 使用しているため、ほとんどの最適化は、エディット コンティニュと互換性がない、 /ZI無効になります#pragma optimizeステートメントをコードにします。Because most optimizations are incompatible with Edit and Continue, using /ZI disables any #pragma optimize statements in your code. /ZIオプションは、またの使用と互換性のある、 __行__定義済みマクロが; のコードをコンパイル /ZI を使用することはできません __行__ 非型テンプレート引数としてが __行__ マクロの展開で使用できます。The /ZI option is also incompatible with use of the __LINE__ predefined macro; code compiled with /ZI cannot use __LINE__ as a non-type template argument, although __LINE__ can be used in macro expansions.

/ZIオプションを有効にどちらも、 /Gy (関数レベルのリンクの有効にする)/FC (完全なソース コード ファイルのパスで診断)コンパイル時に使用するオプション。The /ZI option forces both the /Gy (Enable Function-Level Linking) and /FC (Full Path of Source Code File in Diagnostics) options to be used in your compilation.

/ZIと互換性がない/clr (共通言語ランタイムのコンパイル)します。/ZI is not compatible with /clr (Common Language Runtime Compilation).

注意

/ZIオプションは、x86 および x64 プロセッサを対象とするコンパイラで使用できるのみ、このコンパイラ オプションは ARM プロセッサを対象とするコンパイラで使用できません。The /ZI option is only available in the compilers targeting x86 and x64 processors; this compiler option is not available in the compilers targeting ARM processors.

Visual Studio 開発環境において、このコンパイラ オプションを設定する方法To set this compiler option in the Visual Studio development environment

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。Open the project's Property Pages dialog box. 詳細については、次を参照してください。 Visual Studio での設定の C++ コンパイラとビルド プロパティします。For details, see Set C++ compiler and build properties in Visual Studio.

  2. 開く、構成プロパティ > C/C++ > 全般プロパティ ページ。Open the Configuration Properties > C/C++ > General property page.

  3. 変更、デバッグ情報の形式プロパティ。Modify the Debug Information Format property. OK を選択して変更を保存してください。Choose OK to save your changes.

このコンパイラ オプションをコードから設定するにはTo set this compiler option programmatically

関連項目See also

MSVC コンパイラ オプションMSVC Compiler Options
MSVC コンパイラ コマンド ラインの構文MSVC Compiler Command-Line Syntax