共用方式為


/dynamicdeopt (啟用C++動態偵錯) (預覽)

這很重要

/dynamicdeopt 編譯程序參數目前處於預覽狀態。 這項資訊與發行前版本功能有關,此功能可能會在發行前大幅修改。 Microsoft針對此處提供的資訊,不提供任何明示或默示擔保。

啟用 C++動態偵錯(預覽版),讓您可以偵錯優化程式代碼,就像它已編譯未優化,並在隨選函式取消優化的任何位置逐步執行。

語法

/dynamicdeopt
/dynamicdeopt:suffix <suffix>
/dynamicdeopt:sync

論點

suffix
指定已取消優化輸出的擴展名。

沒有選項且未提供任何 test.cpp 做為輸入,您的輸出會包含 test.objtest.exetest.pdb,以及 test.alt.objtest.alt.exetest.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可能會導致函式從替換檔案中移除,這表示您無法逐步執行這些函式。

IncrediBuild 10.24 支援C++動態偵錯組建。
FastBuild v1.15 支援C++動態偵錯組建。

/dynamicdeopt 與edit-and-continue 不相容,而且下列編譯程序參數:

/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++ 動態偵錯 (預覽)。 在 Visual Studio 中設定參數有一些優點,因為 MSBuild 會自動隱藏某些不相容的交換器,例如 /GL/OPT:ICF。 它也會設定對應的連結器選項 (/DYNAMICDEOPT)。 您也可以在命令列中設定 參數。

以程式設計方式設定此編譯程序選項

另請參閱

C++動態偵錯 (預覽)
MSVC 編譯器選項
MSVC 編譯器命令列語法