Share via


程式資料庫檔案 (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 必須完全相符」這項要求的相關資訊和連結。

資訊加強。