程式資料庫檔案 (C++)
更新:2011 年 3 月
這個主題適用於:
版本 |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
|||||
Pro、Premium 和 Ultimate |
程式資料庫 (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.PDB。 插入的資訊包括型別資訊,但是不包括符號資訊 (例如,函式定義)。 因此,即使每個原始程式檔包含了常見的標頭檔 (例如,<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 檔案,[尋找符號] 對話方塊即會出現,可讓您搜尋符號或將額外的位置加入搜尋路徑。
重要事項 |
---|
偵錯工具載入二進位的 PDB 時,該 PDB 必須完全符合建置二進位時所建立的 PDB (也就是說,它必須是原始 PDB 或其複本)。 因為編譯器在建立二進位時會考量多項因素,所以即使程式碼本身沒有改變,二進位的實際配置也可能會變更。 如需詳細資訊,請參閱 MSDN 部落格文章:Visual Studio 為何要求偵錯工具的符號檔必須 *完全* 符合當初建置這些符號檔時所使用的二進位檔?(英文) |
請參閱
概念
程式資料庫檔案 (C#、F# 和 Visual Basic)
其他資源
變更記錄
日期 |
記錄 |
原因 |
---|---|---|
2011 年 3 月 |
新增「PDB 必須完全相符」這項要求的相關資訊和連結。 |
資訊加強。 |