初始化符號處理常式

下列程式碼示範如何初始化符號處理常式。 SymSetOptions函式會延遲符號載入,直到要求符號資訊為止。 程式碼會針對 SymInitialize函式的 BInvade 參數傳遞 TRUE 值,以載入指定進程中每個模組的符號。 (此函式會針對進程已對應至其位址空間的每個模組,呼叫 SymLoadModule64 函式。 )

如果指定的進程不是呼叫 SymInitialize的進程,則程式碼會傳遞處理序識別碼做為 SymInitialize 的第一個參數。

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

DWORD  error;
HANDLE hProcess;

SymSetOptions(SYMOPT_UNDNAME | SYMOPT_DEFERRED_LOADS);

hProcess = GetCurrentProcess();

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