Step by Step: 데이터베이스 파일(*.pdb) 쿼리하는 방법

기술 자료: 2461217 - 이 문서가 적용되는 제품 보기.
그림 축소그림 확대
Step by Step
Step by Step 기술 자료 모두 보기
모두 확대 | 모두 축소

소개

프로그램 데이터베이스 파일(*.pdb)은 프로젝트를 컴파일하고 링크하는 단계에서 수집된 타입정보와 디버깅에 필요한 다양한 심볼 정보를 저장하고 있는 이진 파일입니다. PDB 파일은 C/C++ 프로그램의 경우 컴파일 시 /ZI나 /Zi 옵션을 이용하여 생성할 수 있고, Visual Basic, Visual C#, Jscript의 경우 /debug 옵션을 이용하여 생성할 수 있습니다.

본 문서는 Visual C++와 DIA(Debugging Interface Access) SDK를 이용하여 pdb 파일의 내용을 읽고 정보를 조회하는 방법을 설명합니다.



방법

  1. IDiaDataSource interface를 생성하세요.
    CComPtr<IDiaDataSource> pSource;
    hr = CoCreateInstance( CLSID_DiaSource,
                           NULL,
                           CLSCTX_INPROC_SERVER,
                           __uuidof( IDiaDataSource ),
                          (void **) &pSource);
    
    if (FAILED(hr))
    {
        Fatal("Could not CoCreate CLSID_DiaSource. Register msdia80.dll." );
    }

  2. IDiaDataSource::loadDataFromPdb() 또는 IDiaDataSource::loadDataForExe를 호출하여 디버깅 정보를 로드하세요.
    wchar_t wszFilename[ _MAX_PATH ];
    mbstowcs( wszFilename, szFilename, sizeof( wszFilename )/sizeof( wszFilename[0] ) );
    if ( FAILED( pSource->loadDataFromPdb( wszFilename ) ) )
    {
        if ( FAILED( pSource->loadDataForExe( wszFilename, NULL, NULL ) ) )
        {
            Fatal( "loadDataFromPdb/Exe" );
        }
    }

  3. 디버깅 정보에 접근하기 위해서 IDiaDataSource::openSession()을 호출하여 IDiaSession 을 가져오세요.
    CComPtr<IDiaSession> psession;
    if ( FAILED( pSource->openSession( &psession ) ) ) 
    {
        Fatal( "openSession" );
    }

  4. IDiaSessionmethod를 이용하여 로드된 디버깅 정보로부터 쿼리를 수행하세요.
    CComPtr<IDiaSymbol> pglobal;
    if ( FAILED( psession->get_globalScope( &pglobal) ) )
    {
        Fatal( "get_globalScope" );
    }

  5. IDiaEnum* 인터페이스를 이용하면 모든 심볼과 디버깅 정보를 조회할 수 있습니다.
    CComPtr<IDiaEnumTables> pTables;
    if ( FAILED( psession->getEnumTables( &pTables ) ) )
    {
        Fatal( "getEnumTables" );
    }
    
    CComPtr< IDiaTable > pTable;
    while ( SUCCEEDED( hr = pTables->Next( 1, &pTable, &celt ) ) && celt == 1 )
    {
         // Do something with each IDiaTable.
    }  

추가 정보

IDiaDataSource에 대해 알아보기




의견 보내기

표 축소표 확대
그림 축소그림 확대
의견 보내기

Microsoft 고객지원 사이트에서는 고객님의 소리를 귀담아 듣습니다. 아래 의견 보내기로 소중한 의견 보내주시기 바랍니다.

속성

기술 자료: 2461217 - 마지막 검토: 2013년 9월 30일 월요일 - 수정: 1.2
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Windows Software Development Kit 3.0
키워드:?
kbstepbystep kbhowto kbvideocontent KB2461217

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com