다음을 통해 공유


기호 모듈 로드

애플리케이션이 fInvadeProcess 매개 변수를 TRUE로 설정하여 SymInitialize 함수를 호출하지 않으면, 모듈에 필요한 기호는 필요시에 로드해야 합니다. 요청 시 기호 모듈을 로드하기 위해 애플리케이션은 모듈 이름에 대한 전체 경로를 사용하여 SymLoadModuleEx 함수를 호출할 수 있습니다. 모듈이 로드되면 기호 처리기는 SymSetOptions 함수를 사용하여 설정한 옵션에 따라 기호를 즉시 로드하거나 로드를 연기합니다.

다음 코드는 기호 모듈을 로드합니다. 기호 처리기 초기화하는코드를 사용하여 기호 처리기를 초기화한 것으로 가정합니다.

TCHAR  szImageName[MAX_PATH] = TEXT("foo.dll");
DWORD64 dwBaseAddr = 0;

if (SymLoadModuleEx(hProcess,    // target process 
                    NULL,        // handle to image - not used
                    szImageName, // name of image file
                    NULL,        // name of module - not required
                    dwBaseAddr,  // base address - not required
                    0,           // size of image - not required
                    NULL,        // MODLOAD_DATA used for special cases 
                    0))          // flags - not required
{
    // SymLoadModuleEx returned success
}
else
{
    // SymLoadModuleEx failed
    DWORD error = GetLastError();
    printf("SymLoadModuleEx returned error : %d\n", error);
}

szImageName 디버깅 정보(.exe, .dll, .drv, .sys, .scr, .cpl, .com)가 있는 실행 가능한 모듈의 경로일 수 있습니다. 또한 dwBaseAddr는 로드할 기호 모듈의 기본 주소입니다. 이 값이 0이면 기호 처리기는 지정된 기호 모듈에서 기본 주소를 가져옵니다.

기호 모듈 언로드