公用符號和私人符號
當您建置驅動程式或其他程式時,程式符號通常會儲存在 符號檔中,不過有些較舊的編譯器會將特定符號儲存在可執行檔中。 當偵錯工具正在分析程式時,它必須存取程式的符號。
一般而言,符號檔可以包含下列任何或所有符號:
所有函式的名稱和位址
所有資料類型、結構和類別定義
全域變數的名稱、資料類型和位址
區域變數的名稱、資料類型、位址和範圍
原始程式碼中對應至每個二進位指令的行號
某些計畫開發人員可能會感到不滿意地與客戶共用所有這些資訊。 BinPlace 可用來減少符號檔中的符號數量。
即使是最基本偵錯,例如函式名稱和全域變數,也需要一些基本符號。 這些稱為 公用符號。 雖然對更深入的偵錯會話而言,資料結構名稱、全域變數、只有一個物件檔、區域變數和行號資訊等符號不一定需要偵錯。 這些稱為 私人符號。
包含私用和公用符號的符號檔稱為 完整符號檔。 單獨包含公用符號的符號檔稱為 等量符號檔。
BinPlace 可以建立移除的符號檔。 其作法是建立只包含公用符號的新符號檔;私人符號會移除 (「移除」) 。 使用最常見的 BinPlace 選項時, (-a -x -s -n) ,等量符號檔會放在 - s 參數之後所列的目錄中,而完整符號檔會放在 -n 參數之後所列的目錄中。
當 BinPlace 移除符號檔時,會提供相同的簽章和其他識別資訊,以移除和完整版本的檔案。 這可讓您使用任一版本進行偵錯。
注意 當符號檔位於與可執行檔相同的目錄中時,BinPlace 會將私用符號帶出符號檔,而且您可以在 BinPlace 命令列上指定 可執行檔 的名稱 (以及適當的選項) 。 您不應該指定符號檔本身的名稱-- 這麼做會導致 BinPlace 移動檔案而不改變它。
如果您需要判斷符號檔是否包含私人符號,您可以使用 SymChk 工具。 SymChk 是 Windows 偵錯工具套件的一部分。 如需詳細資訊,請參閱 SymChk 和 Windows 偵錯 。
如果您要將驅動程式提交至 Windows 硬體認證計畫,如果您不想與 Microsoft 共用私人符號,可以提交移除的符號檔。 BinPlace 移除的符號檔不會公開驅動程式架構中通常被視為機密的任何部分。 如需詳細資訊,請參閱 Windows 硬體認證計畫。