這很重要
/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可能會導致函式從替換檔案中移除,這表示您無法逐步執行這些函式。
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
)。 您也可以在命令列中設定 參數。
以程式設計方式設定此編譯程序選項
- 請參閱 CompileAsManaged。