符號和符號檔案
連結應用程式、程式庫、驅動程式或作業系統時,建立.exe和.dll檔案的連結器也會建立一些稱為 符號檔的其他檔案。
符號檔會保存執行二進位檔時實際不需要的各種資料,但在偵錯程式中可能非常有用。
一般而言,符號檔可能包含:
全域變數
區域變數
函式名稱和其進入點的位址
FPO) 記錄 (框架指標省略
來源行號
這些專案分別稱為 符號。 例如,單一符號檔 Myprogram.pdb 可能包含數百個符號,包括全域變數和函式名稱和數百個區域變數。 軟體公司通常會發行兩個版本的每個符號檔:包含 公用符號 和 私用符號的完整符號檔,以及只包含公用符號的精簡 (移除) 檔案。 如需詳細資訊,請參閱 公用和私人符號。
偵錯時,您必須確定偵錯工具可以存取與您正在偵錯之目標相關聯的符號檔。 即時偵錯和偵錯損毀傾印檔案都需要符號。 您必須取得您想要偵錯之程式碼的適當符號,並將這些符號載入偵錯工具。
Windows 符號
Windows 會將其符號保留在副檔名為 .pdb 的檔案中。
編譯器和連結器會控制符號格式。 Visual C++ 連結器會將所有符號放在 .pdb 檔案中。
Windows 作業系統內建兩個版本。 免費組建 (或零售組建) 具有相對小型的二進位檔,而且已核取的組建 (或偵錯組建) 具有較大的二進位檔,且程式碼本身具有更多偵錯符號。 在舊版 Windows 上,Windows 10 1803 版之前,已檢查的組建可供使用。 每個組建都有自己的符號檔。 在 Windows 上偵錯目標時,您必須使用符合目標上 Windows 組建的符號檔。
下表列出數個存在於標準 Windows 符號樹狀目錄中的目錄:
Directory | 包含 的符號檔 |
---|---|
Acm |
Microsoft 音訊壓縮管理員檔案 |
COM |
可執行檔 (.com) |
CPL |
主控台程式 |
DLL |
動態連結程式庫檔案 (.dll) |
DRV |
驅動程式檔案 (.drv) |
EXE |
可執行檔 (.exe) |
Scr |
螢幕儲存程式檔案 |
SYS |
驅動程式檔案 (.sys) |