重要
/dynamicdeopt
コンパイラ スイッチは現在プレビュー段階です。
この情報は、リリース前に大幅に変更される可能性があるプレリリース機能に関連しています。 Microsoft は、ここに記載されている情報に関して、明示または黙示を問わず、一切の保証を行いません。
C++ 動的デバッグ (プレビュー) を有効にして、最適化されたコードを最適化解除されたかのようにデバッグし、オンデマンド関数の最適化を使用して任意の場所にステップ インできるようにします。
構文
/dynamicdeopt
/dynamicdeopt:suffix <suffix>
/dynamicdeopt:sync
議論
suffix
最適化されていない出力のファイル拡張子を指定します。
オプションがなく、入力として指定された test.cpp
では、出力には test.obj
、test.exe
、test.pdb
、および test.alt.obj
、test.alt.exe
、および test.alt.pdb
が含まれます。 このスイッチを使用すると、最適化されていないバイナリ ビルド成果物のサフィックスを .alt
から別のものに変更できます。 サフィックスを変更する場合、すべてのファイルで新しいサフィックスを使用する必要があり、/dynamicdeopt:suffix
(プレビュー)を使用してリンカーに渡される名前と一致する必要があります。 通常、他のファイルとのファイル名の競合を回避する必要がない限り、このスイッチは使用しません。
sync
最適化された出力を並列ではなくビルドした後、最適化されていない出力をビルドします。 既定では、コンパイラはコード ジェネレーターの並列インスタンスを生成します。 このスイッチを使用すると、代わりに順次実行されます。 このスイッチは、これがビルド環境に適している場合に備えて提供されます。
注釈
このプレビュー フラグは、Visual Studio 2022 バージョン 17.14 Preview 2 以降で使用でき、x64 プロジェクトにのみ適用され、対応するリンカー フラグ (/DYNAMICDEOPT
) で使用する必要があります。
/dynamicdeopt
を使用してコンパイルすると、デバッグに使用される他のバイナリが生成されます。 最適化されたファイルで最適化された関数をデバッグすると、代わりにデバッガーが代替バイナリにステップ インします。 これにより、最適化されていないコードをデバッグしているかのようにデバッグしながら、最適化されたコードのパフォーマンス上の利点を引き続き得ることができます。
/dynamicdeopt
には次のものが必要です。
/DEBUG
または /DEBUG:FULL
。
/DEBUG
を指定しない場合、または /DEBUG:FASTLINK
を指定すると、リンカーによって致命的なエラーが発生します。
/INCREMENTAL
を指定すると、コンパイラによって警告が生成され、/INCREMENTAL
が自動的にオフになります。
/OPT:ICF
を指定すると、コンパイラはデバッグ エクスペリエンスがそれほど良くないという警告を生成します。 これは、ICF によって関数が alt ファイルから削除される可能性があるためです。これは、関数にステップ インできないことを意味します。
IncrediBuild 10.24 では、C++ 動的デバッグ ビルドがサポートされています。
FastBuild v1.15 では、C++ 動的デバッグ ビルドがサポートされています。
/dynamicdeopt
はエディット コンティニュおよび次のコンパイラ スイッチと互換性がありません。
/GL
/ZI
/RTC1
/RTCs
/RTCc
/RTCu
/GH
/Gh
/fastcap
/callcap
/ZW
/fsanitize=address
/fsanitize=kernel-address
All of the CLR flags
Visual Studio 開発環境でこのリンカー オプションを設定する
このスイッチは、Visual Studio 内で設定できます。 詳細については、「C++ 動的デバッグ (プレビュー)を参照してください。 MSBuild では、/GL
や /OPT:ICF
などの一部の互換性のないスイッチが自動的に抑制されるため、Visual Studio でスイッチを設定する利点があります。 また、対応するリンカー オプション (/DYNAMICDEOPT
) も設定します。 コマンド ラインでスイッチを設定することもできます。
このコンパイラ オプションをプログラムで設定する
- CompileAsManagedを参照してください。