Megosztás:


A Szimbólumkezelő inicializálása

Az alábbi kód bemutatja, hogyan inicializálhatja a szimbólumkezelőt. A SymSetOptions függvény a szimbólumok betöltését a szimbólumadatok kéréséig hárítja el. A kód betölti a megadott folyamat egyes moduljainak szimbólumait azzal, hogy a bInvade paraméterhez a TRUE értéket adja át a SymInitialize függvény esetében. (Ez a függvény meghívja a SymLoadModule64 függvényt minden olyan modulhoz, amelyet a folyamat leképezett a címtérbe.)

Ha a megadott folyamat nem az SymInitializenevű folyamat, a kód egy folyamatazonosítót ad át a SymInitializeelső paramétereként.

A SymInitialize második paramétereként NULL megadása azt jelzi, hogy a szimbólumkezelőnek az alapértelmezett keresési útvonal használatával kell megkeresnie a szimbólumfájlokat. A szimbólumkezelő által történő szimbólumfájlok megkeresésének részletei vagy annak leírása, hogyan adhat meg egy alkalmazás szimbólumkeresési útvonalat, olvassa el a Szimbólum elérési útjaicímű témakört.

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;
}