編輯後繼續 (C++)

您可以在 C++ 專案中使用「熱重新載入」(先前稱為「編輯後繼續」)。 如需 [編輯後繼續] 限制的資訊,請參閱支援的程式碼變更 (C++)

您可以在 C++ 專案中,使用 [編輯後繼續]。 如需 [編輯後繼續] 限制的資訊,請參閱支援的程式碼變更 (C++)

/Zo (增強最佳化偵錯) 編譯器選項會將額外資訊新增至不使用 /Od (停用 (偵錯)) 選項編譯之二進位碼檔案的 .pdb (符號) 檔案。

/Zo 可停用 [編輯後繼續]。 請參閱如何:對最佳化程式碼進行偵錯

啟用或停用編輯後繼續

如果您不希望在目前的偵錯工作階段中套用正在編輯的程式碼內容,您可能需要停用 [編輯後繼續] 的自動引動過程。 您也可以重新啟用自動的 [編輯後繼續]。

重要

如需功能相容性的必要組建設定和其他資訊,請參閱 Visual Studio 2015 Update 3 中的 C++ 編輯後繼續

  1. 如果您在偵錯工作階段中,請停止偵錯 (Shift + F5)。

  2. 開啟工具>選項>偵錯>.NET/C++ 熱重新載入

  3. 選擇以下一個或兩個選項以啟用 [編輯後繼續]。

    • 偵錯時啟用熱重新載入和編輯後繼續。 在附加偵錯工具的情況下啟動時啟用熱重新載入 (F5)。

    • 在未進行偵錯的情況下啟動時啟用熱重新載入. 在未附加偵錯工具的情況下啟動時啟用熱重新載入 (Ctrl+F5)。

    修改這些設定會影響您處理的所有專案。 變更設定之後不需要重新建置應用程式。 如果您從命令列或 Makefile 建置應用程式,但是在 Visual Studio 環境中偵錯,只要您設定了 /ZI 選項,仍可使用 [編輯後繼續]。

  1. 如果您在偵錯工作階段中,請停止偵錯 (Shift + F5)。

  2. 在 [ 工具 ] 功能表上選擇 [ 選項]。

  3. 在 [選項] 對話方塊中,選取 [偵錯] > [一般]

  4. 若要啟用,請選取 [啟用編輯後繼續]。 若要停用,請清除該核取方塊。

  5. 在 [編輯後繼續] 群組中,選取或清除 [啟用原生編輯後繼續] 核取方塊。

    修改這個設定會影響您處理的所有專案。 變更這個設定之後不需要重建應用程式。 如果您從命令列或 Makefile 建置應用程式,但是在 Visual Studio 環境中偵錯,只要您設定了 /ZI 選項,仍可使用 [編輯後繼續]。

明確套用程式碼變更

在 C++ 中,[編輯後繼續] 會以兩種方式套用程式碼變更。 當您選擇執行命令時,會隱含地套用程式碼變更,而您使用 [ 套用程式碼變更 ] 命令時,則會明確套用程式碼變更。

當您明確套用程式碼變更時,程式會保持在中斷模式中,即完全不會執行。

  • 若要明確套用程式碼變更,請在 [偵錯] 功能表上,選擇 [套用程式碼變更]

如何停止程式碼變更

當 [編輯後繼續] 正在套用程式碼變更時,您可以停止該作業。

若要停止套用程式碼變更:

  • 在 [偵錯] 功能表上,選擇 [停止套用程式碼變更]

    只有套用程式碼變更時,才能看見這個功能表項目。

    如果您選擇此選項,就無法認可任何的程式碼變更。

重設執行點

某些程式碼變更會在 [編輯後繼續] 套用該變更時,造成執行點移至新位置。 [編輯後繼續] 會盡量精確地放置執行點,但有時結果未必完全正確。

在 C++ 中,當執行點變更時,會出現一個對話方塊通知您。 您應該先確認位置是否正確,再繼續偵錯。 如果位置不正確,請使用 [ 設定下一個陳述式 ] 命令。 如需詳細資訊,請參閱 設定下一個要執行的陳述式

使用過時程式碼

在某些情況下,[編輯後繼續] 不能立即將程式碼變更套用至執行檔,但是如果您繼續偵錯或許能在稍後套用程式碼變更。 如果您編輯呼叫目前函式的函式,或將 64 位元組以上的新變數加入至呼叫堆疊上的某個函式時,就會發生這種情況。

在上述情形中,偵錯工具會繼續執行原始的程式碼直到套用變更為止。 過時程式碼會在不同的來源視窗中顯示為暫時原始程式檔視窗,並使用像是 enc25.tmp的標題。 已編輯的來源會繼續出現在原始來源視窗中。 如果您嘗試編輯過時程式碼,就會出現警告訊息。