Sdílet prostřednictvím


Načítání symbolů

Obslužná rutina symbolů načte symboly při volání funkce SymInitialize s parametrem fInvadeProcess nastaveným na TRUE nebo při volání funkce SymLoadModuleEx k určení modulu. V obou případech obslužná rutina symbolů buď načte symboly, nebo odloží načítání symbolů, dokud nebudou požadovány, v závislosti na možnostech nastavených funkcí SymSetOptions.

Obslužnou rutinu symbolů lze použít k načtení symbolických informací pro libovolný modul; nemusí být přidružen k procesu zadanému v volání SymInitialize. Pokud chcete použít libovolný modul, zadejte úplnou cestu k imagi modulu v parametru ImageName. Můžete použít cestu k libovolnému spustitelnému modulu, který obsahuje informace o ladění (.exe, .dll, .drv, .sys, .scr, .cplnebo .com). Pomocí parametru BaseOfDll určete libovolnou adresu načítání a adresy symbolů budou z této adresy založeny.

Nemusí být nutné udržovat modul symbolů načtený po celou dobu trvání aplikace. Pokud chcete uvolnit modul symbolů ze seznamu modulů obslužné rutiny symbolů, použijte funkci SymUnloadModule64. Tato funkce uvolní paměť přidělenou modulu symbolů. Pokud chcete pro tento modul znovu použít symboly, musíte volat funkci SymLoadModuleEx i v případě, že je nastavena možnost odloženého načtení symbolu.

Diagnostika problémů s načítáním symbolů

Pokud chcete zobrazit všechny pokusy o načtení symbolů, zavolejte SymSetOptions pomocí SYMOPT_DEBUG. To způsobí, že DbgHelp zavolá funkci OutputDebugString s podrobnými informacemi o hledání symbolů, jako jsou adresáře, které hledá, a chybové zprávy. Pokud váš kód používá SymRegisterCallback64, DbgHelp zavolá vaši callback funkci místo volání OutputDebugString. Parametr ActionCode je nastavený na CBA_DEBUG_INFO a parametr CallbackData je řetězec, který se dá zobrazit.

Pokud chcete povolit zobrazení tohoto výstupu ladění v konzole beze změny zdrojového kódu, nastavte proměnnou prostředí DBGHELP_DBGOUT na hodnotu, která neníNULL před voláním funkce SymInitialize. Pokud chcete protokolovat informace do souboru, nastavte proměnnou prostředí DBGHELP_LOG na název souboru protokolu, který se má použít.

Mějte na paměti, že tyto funkce by se měly používat jenom v případě potřeby. Mohou zpomalit načítání modulů, které obsahují mnoho symbolů.