依預設,載入目標模組時,不會實際載入符號資訊。 相反地,偵錯工具會視需要載入符號。 這稱為 延遲符號載入 或 延遲符號載入。 啟用此選項時,偵錯工具會在遇到無法辨識的符號時載入符號。
當符號路徑變更時,例如使用 .sympath (設定符號路徑) 指令,所有載入具有匯出符號的模組都會延遲重新載入。 如果新路徑不再包含用來載入 PDB 符號的原始路徑,則會延遲重新載入具有完整 PDB 符號的模組符號。 如果新路徑仍包含 PDB 符號檔的原始路徑,則不會延遲重新載入這些符號。
停用延遲符號載入時,進程啟動可能會慢得多,因為每當載入模組時,都會讀取所有符號。
在 WinDbg 中,您可以使用 [偵錯] 功能表上的 [解決不合格符號] 選項,針對沒有模組前置詞的符號修改延遲符號載入行為。
您可以使用 ld (載入符號) 指令或 .reload (重新載入模組) 指令搭配 /f 選項來置換延遲符號載入。 這些會強制立即載入指定的符號,但其他符號的載入會延遲。
依預設,會啟用延遲符號載入。 在 CDB 和 KD 中, -s命令列選項 會關閉此選項。 您也可以使用 tools.ini 檔案中的 LazyLoad 變數,在 CDB 中關閉它。 偵錯工具執行之後,可以分別使用 .symopt+0x4 或 .symopt-0x4 來開啟或關閉此選項。