기호 처리기 초기화
다음 코드에서는 기호 처리기를 초기화하는 방법을 보여 줍니다. SymSetOptions 함수는 기호 정보가 요청될 때까지 기호 로드를 지연합니다. 이 코드는 SymInitialize 함수의 bInvade 매개 변수에 대한 TRUE 값을 전달하여 지정된 프로세스의 각 모듈에 대한 기호를 로드합니다. (이 함수는 프로세스가 주소 공간에 매핑된 각 모듈에 대해 SymLoadModule64 함수를 호출합니다.)
지정된 프로세스가 SymInitialize호출하는 프로세스가 아닌 경우 코드는 프로세스 식별자를 SymInitialize첫 번째 매개 변수로 전달합니다.
SymInitialize 두 번째 매개 변수로 NULL 지정하면 기호 처리기가 기본 검색 경로를 사용하여 기호 파일을 찾아야 합니다. 기호 처리기가 기호 파일을 찾는 방법 또는 애플리케이션에서 기호 검색 경로를 지정하는 방법에 대한 자세한 내용은 기호 경로참조하세요.
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;
}