/Yd (將偵錯資訊置入目的檔)
配合 /Yc 和 /Z7 選項使用時,會將完整的偵錯資訊置入所有由先行編譯標頭 (.pch) 檔建立的目的檔中。 已取代。
/Yd
備註
/Yd 已被取代;Visual C++ 現在支援多個物件寫入單一 .pdb 檔,請改用 /Zi。 如需詳細資訊,請參閱 Deprecated Compiler Options。
除非您需要散發包含偵錯資訊的程式庫,否則請使用 /Zi 選項,而不要用 /Z7 和 /Yd。
只有在散發含有偵錯資訊的程式庫時才需要將完整的偵錯資訊儲存在每一個 .obj 檔案中。 它會減緩編譯速度並且需要相當大的磁碟空間。 當使用 /Yc 和 /Z7 而不搭配 /Yd 時,編譯器會將通用偵錯資訊儲存在由 .pch 檔案建立的 .obj 檔案中。 編譯器不會將這項資訊插入由 .pch 檔案後續建立的 .obj 檔案中;它會插入這項資訊的交互參考。 不論有多少 .obj 檔案使用 .pch 檔案,只有一個 .obj 檔案會含有通用偵錯資訊。
雖然這項預設行為會產生較快的組建時間並且減少磁碟空間的需求,但是如果有項小變更需要重建含有通用偵錯資訊的 .obj 檔案的話就會很麻煩了。 在這種情況下,編譯器必須重建含有對原來 .obj 檔案之交互參考的所有 .obj 檔案。 同時,如果某個通用 .pch 檔案被不同的專案使用時,要依賴對單一 .obj 檔案的交互參考會相當困難。
如需先行編譯標頭的詳細資訊,請參閱:
在 Visual Studio 開發環境中設定這個編譯器選項
開啟專案的 [屬性頁] 對話方塊。 如需詳細資訊,請參閱 HOW TO:開啟專案屬性頁。
按一下 [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 (以及它們包含的任何其他標頭檔 (Header File)) 的型別和符號資訊。 現在您可以使用先行編譯標頭 ETC.pch 來編譯原始程式檔 G.cpp:
CL /YuETC.H /Z7 G.CPP
目的檔 G.obj 並未包含先行編譯標頭的偵錯資訊,只是參考 F.obj 檔案中的這項資訊。 請注意,您必須以 F.obj 檔案連結。
如果您的先行編譯標頭不是以 /Z7 編譯,您仍然可以在稍後使用 /Z7 的編譯中使用它。 不過,偵錯資訊會置於目前的目的檔中,而且偵錯工具無法使用先行編譯標頭中定義的函式區域符號和型別。