PDB 檔 (C++)
更新:2007 年 11 月
這個主題適用於:
版本 |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express 版 |
||||
Standard 版 |
||||
Pro/Team 版 |
表格圖例:
套用 |
|
不套用 |
|
預設隱藏的命令。 |
程式資料庫 (PDB) 檔會保留偵錯和專案狀態資訊,以便您的程式進行偵錯組態的累加連結 (Incremental Link)。當您使用 /ZI 或 /Zi 建置時,就會建立 PDB 檔 (適用於 C/C++)。
在 Visual C++ 中,/Fd 選項會為編譯器所建立的 PDB 檔命名。當您使用精靈在 Visual Studio 中建立專案時,就會設定 /Fd 選項以建立名為 project.PDB 的 PDB。
如果您在使用 Makefile 建置 C/C++ 應用程式時,指定了 /ZI 或 /Zi,但沒有指定 /Fd,那麼您在最後會得到兩個 PDB 檔:
VC80.PDB:(簡單地說,VCx0.PDB 的 x 代表 Visual C++ 的版本)。這個檔案會儲存各個 OBJ 檔的所有偵錯資訊,且其所在位置與專案 Makefile 的目錄位置相同。
project.PDB:這個檔案會儲存此.exe 檔的所有偵錯資訊。若是 C/C++,偵錯資訊會位於 \debug 子目錄中。
每次建立 OBJ 檔時,C/C++ 編譯器會將偵錯資訊合併到 VCx0.PBD。插入的資訊包括型別資訊,但是不包括符號資訊 (例如,函式定義)。因此,即使每個原始程式檔包含了常見的標頭檔 (例如,<windows.h>),這些標頭檔的 typedef 也只會儲存一次,而不會出現在每個 OBJ 檔。
連結器會建立包含專案 EXE 檔之偵錯資訊的 project.PDB。這個 project.PDB 包含了完整的偵錯資訊,包括函式原型,而不僅是在 VCx0.PDB 找到的類型資訊。這兩種 PDB 檔案都允許累加更新。連結器也會將路徑嵌入其建立的 .exe 或 .dll 檔中的 .pdb 檔。
Visual Studio 偵錯工具會使用 EXE 或 DLL 檔中 PDB 路徑找出 project.PDB 檔。如果偵錯工具在該位置找不到 PDB 檔案,或是路徑無效 (例如,專案已移至另一部電腦),偵錯工具就會搜尋包含 EXE 的路徑,也就是 [選項] 對話方塊 ([Debugging] 資料夾,[Symbols] 節點) 中指定的符號路徑。這個偵錯工具不會載入不符合偵錯之二進位檔的 PDB。