共用方式為


初始化符號處理程式

下列程式代碼示範如何初始化符號處理程式。 SymSetOptions 函式會延遲符號載入,直到要求符號信息為止。 程式碼通過將 TRUE 賦值給 SymInitialize 函式中的 bInvade 參數,以載入指定程序中每個模組的符號。 (此函式會針對進程對應至其位址空間的每個模組呼叫 SymLoadModule64 函式。

如果指定的進程不是呼叫 SymInitialize的程式,程式代碼會將進程標識碼傳遞為 SymInitialize的第一個參數。

NULL 指定為 symInitialize 的第二個參數,表示符號處理程式應該使用預設搜尋路徑來尋找符號檔。 如需符號處理程式如何尋找符號檔或應用程式如何指定符號搜尋路徑的詳細資訊,請參閱 符號路徑

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