/Yd (將偵錯資訊置入目的檔)
當搭配 /Yc 和 /Z7 選項使用時,Paces 會完成從先行編譯標頭 (.pch) 檔案所建立之所有物件檔案中的偵錯資訊。 已取代。
語法
/Yd
備註
/Yd 已被取代;Visual C++現在支援寫入單一 .pdb 檔案的多個物件,請改用 /Zi 。 如需已被取代的編譯程式選項清單,請參閱依類別列出的編譯程式選項中已被取代和移除的編譯程序選項。
除非您需要散發包含偵錯資訊的連結庫,否則請使用 /Zi 選項,而不是 /Z7 和 /Yd。
只需要將完整的偵錯資訊儲存在每個.obj檔案中,才能散發包含偵錯資訊的連結庫。 它會讓編譯變慢,而且需要相當多的磁碟空間。 在沒有 /Yd 的情況下使用 /Yc 和 /Z7 時,編譯程式會將一般偵錯資訊儲存在從 .pch 檔案建立的第一個.obj檔案中。 編譯程式不會在後續從 .pch 檔案建立.obj檔案中插入此資訊;它會插入資訊的交叉參考。 無論有多少.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 進行編譯。 不過,偵錯資訊會放在目前的對象檔中,而預先編譯標頭中定義的函式和型別的本機符號則不適用於調試程式。