共用方式為


符號載入

當您呼叫 SymInitialize 函式時,符號處理程式會載入符號,並將 fInvadeProcess 參數設定為 TRUE,或呼叫 SymLoadModuleEx 函式來指定模組。 不論是哪一種情況,符號處理程式會載入符號或延遲符號載入,直到要求符號為止,視 SymSetOptions 函式所設定的選項而定。

符號處理程式可用來擷取任何模組的符號資訊;它不需要與 SymInitialize 呼叫中指定的進程產生關聯。 若要使用任意模組,請在 ImageName 參數中指定模組映像的完整路徑。 您可以使用具有偵錯資訊的任何可執行模組路徑(.exe、.dll、.drv、.sys、.scr、.cpl或 .com)。 使用 BaseOfDll 參數來指定任何載入位址,然後符號位址會以該位址為基礎。

可能不需要讓符號模組在應用程式期間內載入。 若要從符號處理程式的模組清單中釋放符號模組,請使用 symUnloadModule64函式。 此函式會釋放配置給符號模組的記憶體。 若要再次使用該模組的符號,即使已設定符號延後載入選項,您也必須呼叫 SymLoadModuleEx 函式。

診斷符號載入問題

若要檢視載入符號的所有嘗試,請使用 SYMOPT_DEBUG 呼叫 SymSetOptions。 這會導致 DbgHelp 呼叫 OutputDebugString 函式,其中包含符號搜尋的詳細資訊,例如其正在搜尋的目錄和錯誤訊息。 如果您的程式碼使用 SymRegisterCallback64,DbgHelp 會呼叫您的回呼函式,而不是呼叫 OutputDebugStringActionCode 參數會設定為 CBA_DEBUG_INFO,而且 CallbackData 參數是可以顯示的字串。

若要在不變更原始碼的情況下,將此偵錯輸出顯示至控制台,請在呼叫 symInitialize 函式之前,將DBGHELP_DBGOUT環境變數設定為非NULL 值。 若要將資訊記錄到檔案,請將DBGHELP_LOG環境變數設定為要使用的記錄檔名稱。

請注意,這些功能只有在需要時才使用。 它們可能會減緩包含許多符號之模組的符號載入速度。