エディット コンティニュ (C++)

C++ プロジェクトでは、ホット リロード (旧称エディット コンティニュ) を使用できます。 エディット コンティニュの制限についての情報は、「サポートされているコード変更 (C++)」を参照してください。

C++ プロジェクトで、エディット コンティニュを使用できます。 エディット コンティニュの制限についての情報は、「サポートされているコード変更 (C++)」を参照してください。

/Zo (最適化されたデバッグを強化) コンパイラ オプションは、/Od ((Debug) を無効化) オプションなしでコンパイルされたバイナリの .pdb (シンボル) ファイルに付加情報を追加します。

/Zo でエディット コンティニュは無効になります。 「方法: 最適化されたコードをデバッグする」をご覧ください。

エディット コンティニュを有効または無効にする

現在のデバッグ セッション中に適用しないコードの編集を行う場合は、エディット コンティニュの自動起動を無効にすることもできます。 自動エディット コンティニュをもう一度有効にすることもできます。

重要

必要なビルド設定と機能の互換性に関するその他の情報については、「Visual Studio 2015 Update 3 でのエディット コンティニュ」を参照してください。

  1. デバッグ セッション中の場合は、デバッグを停止します (Shift + F5)。

  2. [ツール]>[オプション]>[デバッグ]>[.NET と C++ のホット リロード] を開きます。

  3. 次のオプションのいずれかまたは両方を選択して、[エディット コンティニュ] を有効にします。

    • [Enable Hot Reload and Edit and Continue when debugging]\(デバッグ時にホット リロードとエディット コンティニュを有効にする\)。 デバッガーをアタッチした状態で起動するとき (F5) にホット リロードを有効にします。

    • [Enable Hot Reload when starting without debugging]\(デバッグなしで起動するときにホット リロードを有効にする\)。 デバッガーをアタッチしない状態で起動するとき (Ctrl + F5) にホット リロードを有効にします。

    これらの設定を変更すると、作業するすべてのプロジェクトに影響します。 設定の変更後にアプリケーションをリビルドする必要はありません。 アプリケーションをコマンド ラインまたはメイクファイルでビルドしていますが、Visual Studio 環境でデバッグする場合、/ZI オプションを設定すると、引き続きエディット コンティニュを使用できます。

  1. デバッグ セッション中の場合は、デバッグを停止します (Shift + F5)。

  2. [ツール] メニューの [オプション] を選択します。

  3. [オプション] ダイアログ ボックスで、[デバッグ] > [全般] を選択します。

  4. 有効にするには、[エディット コンティニュを有効にする] を選択します。 無効にするには、このチェック ボックスをオフにします。

  5. [エディット コンティニュ] グループで、 [ネイティブのエディット コンティニュを有効にする] チェック ボックスをオンまたはオフにします。

    この設定を変更すると、作業するすべてのプロジェクトに影響します。 この設定の変更後にアプリケーションをリビルドする必要はありません。 アプリケーションをコマンド ラインまたはメイクファイルでビルドしていますが、Visual Studio 環境でデバッグする場合、/ZI オプションを設定すると、引き続きエディット コンティニュを使用できます。

コード変更を明示的に適用する

C++ では、エディット コンティニュによって 2 つの方法でコード変更を適用できます。 実行コマンドを選択した場合、コード変更は暗黙的に適用できます。 [コード変更を適用] を使用した場合は明示的に適用できます。

コード変更を明示的に適用する場合、プログラムは中断モードのままとなり実行されません。

  • コードの変更を明示的に適用するには、[ デバッグ ] メニューで [ コード変更を適用] を選択します。

コード変更を停止する方法

エディット コンティニュがコード変更を適用するプロセスを実行している間、その操作は中断できます。

コードの変更内容の適用を停止するには

  • [デバッグ] メニューの [コード変更の適用を停止]をクリックします。

    このメニュー項目は、コード変更の適用中にのみ表示されます。

    このオプションを選択すると、コードの変更内容は一切コミットされません。

実行ポイントをリセットする

コードを変更してエディット コンティニュでその変更内容を適用すると、実行ポイントが新しい位置に移動する場合があります。 [エディット コンティニュ] では、実行ポイントができるだけ正確に位置付けられますが、結果が常に正しいとは限りません。

Visual C++ では、実行ポイントが変わると、それを通知するダイアログ ボックスが表示されます。 デバッグを継続する前に、位置が正しいかどうかを確認する必要があります。 位置が正しくない場合は、 [次のステートメントの設定] を使用します。 詳しくは、「 次に実行されるステートメントを設定する」をご覧ください。

古いコードを操作する

場合により、エディット コンティニュがコード変更を直ちに適用して実行可能にできないことがありますが、デバッグを続行すると、後でコード変更が適用できるようになる場合もあります。 これは、現在の関数を呼び出す関数を編集した場合や、呼び出し履歴上の関数に 64 バイトを超える新しい変数を追加した場合に発生します。

このような場合、変更が適用されるまで、デバッガーは元のコードを続けて実行します。 古いコードは、一時的なソース ファイル ウィンドウとして、 enc25.tmpなどのタイトルで別のソース ウィンドウに表示されます。 編集されたソース コードは、元のソース ウィンドウに表示されます。 古いコードを編集しようとすると、警告メッセージが表示されます。