/Yd (將偵錯資訊置入目的檔)
當搭配 /Yc 和 /Z7 選項使用時,Paces 會完成從先行編譯標頭 (.pch) 檔案所建立之所有物件檔案中的 偵錯資訊。 已取代。
語法
/Yd
備註
/Yd 已被取代;Visual C++ 現在支援寫入單一 .pdb 檔案的多個物件,請改用 /Zi 。 如需已被取代的編譯器選項清單,請參閱 依類別 列出的編譯器選項中 已被取代和移除的編譯器選項 。
除非您需要散發包含偵錯資訊的程式庫,否則請使用 /Zi 選項,而不是 /Z7 和 /Yd 。
只需要將完整的偵錯資訊儲存在每個 .obj 檔案中,才能散發包含偵錯資訊的程式庫。 它會讓編譯變慢,而且需要相當多的磁碟空間。 在沒有 /Yd 的情況下 使用 /Yc 和 /Z7 時 ,編譯器會將一般偵錯資訊儲存在從 .pch 檔案建立的第一個 .obj 檔案 中。 編譯器不會將此資訊插入 .obj 檔案中,後續從 .pch 檔案建立;它會插入資訊的交叉參考。 無論有多少 .obj 檔案使用 .pch 檔案,只有一個 .obj 檔案包含一般偵錯資訊。
雖然此預設行為會導致建置時間更快,並減少磁碟空間需求,但如果小型變更需要重建包含常見偵錯資訊的 .obj 檔案,則不想要這樣做。 在此情況下,編譯器必須重建包含原始 .obj 檔案之交叉參考的所有 .obj 檔案。 此外,如果不同的專案使用一般 .pch 檔案,則依賴單一 .obj 檔案的交叉參考是困難的。
如需先行編譯標頭的詳細資訊,請參閱:
在 Visual Studio 開發環境中設定這個編譯器選項
開啟專案的 [屬性頁] 對話方塊。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性。
選取 [組態屬性]>[C/C++]>[命令列] 屬性頁。
在 [ 其他選項 ] 方塊中輸入編譯器選項。
若要以程式方式設定這個編譯器選項
- 請參閱 AdditionalOptions。
範例
假設您有兩個基底檔案 F.cpp 和 G.cpp,每個檔案都包含下列 #include 語句:
#include "windows.h"
#include "etc.h"
下列命令會建立先行編譯標頭檔 ETC.pch 和物件檔 F.obj:
CL /YcETC.H /Z7 F.CPP
物件檔 F.obj 包含 WINDOWS.h 和 ETC.h 的類型和符號資訊(以及它們包含的任何其他標頭檔)。 現在您可以使用先行編譯標頭 ETC.pch 來編譯原始程式檔 G.cpp:
CL /YuETC.H /Z7 G.CPP
物件檔 G.obj 不包含先行編譯標頭的偵錯資訊,而只會參考 F.obj 檔案中的資訊。 請注意,您必須連結 F.obj 檔案。
如果您的先行編譯標頭未使用 /Z7 編譯,您仍然可以在稍後使用 /Z7 進行編譯。 不過,偵錯資訊會放在目前的物件檔中,而預先編譯標頭中定義的函式和型別的本機符號則不適用於偵錯工具。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應