Sdílet prostřednictvím


Inicializace procesoru symbolů

Následující kód předvádí, jak inicializovat zpracování symbolů. Funkce SymSetOptions odkládá načítání symbolů, dokud nejsou požadovány informace o symbolech. Kód načte symboly pro každý modul v zadaném procesu předáním hodnoty TRUE pro parametr bInvade funkce SymInitialize. (Tato funkce volá funkci SymLoadModule64 pro každý modul, který proces má namapován ve svém adresním prostoru.)

Pokud zadaný proces není proces, který se nazývá SymInitialize, kód předá identifikátor procesu jako první parametr SymInitialize.

Určení NULL jako druhého parametru SymInitialize naznačuje, že zpracovatel symbolů by měl k vyhledání souborů symbolů použít výchozí vyhledávací cestu. Podrobné informace o tom, jak obslužná rutina symbolů vyhledá soubory symbolů nebo jak může aplikace určit cestu hledání symbolů, najdete v tématu Cesty symbolů.

DWORD  error;
HANDLE hCurrentProcess;
HANDLE hProcess;

SymSetOptions(SYMOPT_UNDNAME | SYMOPT_DEFERRED_LOADS);

hCurrentProcess = GetCurrentProcess();

if (!DuplicateHandle(hCurrentProcess, hCurrentProcess, hCurrentProcess, &hProcess, 0, FALSE, DUPLICATE_SAME_ACCESS))
{
    // DuplicateHandle failed
    error = GetLastError();
    printf("DuplicateHandle returned error : %d\n", error);
    return FALSE;
}

if (!SymInitialize(hProcess, NULL, TRUE))
{
    // SymInitialize failed
    error = GetLastError();
    printf("SymInitialize returned error : %d\n", error);
    return FALSE;
}