Bagikan melalui


Menginisialisasi Penangan Simbol

Kodenya berikut menunjukkan cara menginisialisasi pengelola simbol. Fungsi SymSetOptions menunda pemrosesan simbol hingga informasi simbol diminta. Kode memuat simbol untuk setiap modul dalam proses yang ditentukan dengan meneruskan nilai TRUE untuk parameter bInvade dari fungsi SymInitialize. (Fungsi ini memanggil fungsi SymLoadModule64 untuk setiap modul yang telah dipetakan ke ruang alamatnya.)

Jika proses yang ditentukan bukanlah proses yang memanggil SymInitialize, kode memberikan ID proses sebagai parameter pertama dari SymInitialize.

Menetapkan NULL sebagai parameter kedua dari SymInitialize menunjukkan bahwa pengelola simbol harus menggunakan jalur pencarian bawaan untuk menemukan file simbol. Untuk informasi terperinci tentang bagaimana penangan simbol menemukan file simbol atau bagaimana aplikasi dapat menentukan jalur pencarian simbol, lihat Jalur Simbol.

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