共用方式為


符號和符號檔

連結應用程式、連結庫、驅動程式或作業系統時,建立 .exe 和 .dll 檔案的連結器也會建立一些稱為 符號檔案的其他檔案。

符號檔會保留各種數據,這些數據在執行二進位檔時實際上不需要,但在偵錯程式中可能非常有用。

一般而言,符號檔可能包含:

  • 全域變數

  • 局部變數

  • 函數名稱及其進入點的位址

  • 框架指標遺漏 (FPO) 記錄

  • 原始碼行號碼

這些項目中的每一個都單獨稱為一個 符號。 例如,單一符號檔 Myprogram.pdb 可能包含數百個符號,包括全域變數和函數名稱,以及數百個區域變數。 通常,軟體公司會發行每個符號檔案的兩個版本:包含 公用符號私人符號的完整符號檔案,以及僅包含公用符號的縮減 (剝離) 檔案。 如需詳細資訊,請參閱 公用和私人符號

偵錯時,您必須確定偵錯工具可以存取與您要偵錯之目標相關聯的符號檔。 即時除錯和偵錯崩潰傾印檔案都需要符號。 您必須取得您想要偵錯之程式碼的適當符號,並將這些符號載入偵錯工具。

Windows 符號

Windows 將其符號保留在副檔名為 .pdb 的檔案中。

編譯器和連結器會控制符號格式。 Visual C++ 連結器會將所有符號放入 .pdb 檔案中。

Windows 作業系統建置了兩個版本。 免費組建 (或零售組建) 具有相對較小的二進位檔,而已檢查組建 (或偵錯組建) 具有較大的二進位檔,程式碼本身中有更多的偵錯符號。 檢查的組建可在 Windows 10 版本 1803 之前的舊版 Windows 上使用。 每個組建都有自己的符號檔案。 在 Windows 上偵錯目標時,您必須使用符合目標上 Windows 組建的符號檔。

下表列出標準 Windows 符號樹狀結構中存在的數個目錄:

目錄 包含符號檔案

ACM

Microsoft 音訊壓縮管理員檔案

COM

可執行檔 (.com)

CPL

控制面板程式

DLL

動態連結程式庫檔案 (.dll)

DRV

驅動程式檔案 (.drv)

EXE

可執行檔 (.exe)

SCR

螢幕保護程式檔案

SYS

驅動程式檔案 (.sys)