현재 오프라인 상태입니다. 인터넷에 다시 연결하기를 기다리고 있습니다.

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

소개
프로그램 데이터베이스 파일(*.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.}  

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

문서 ID: 2461217 - 마지막 검토: 05/26/2014 10:48:00 - 수정: 1.3

Microsoft Windows Software Development Kit 3.0

  • kbstepbystep kbhowto kbvideocontent KB2461217
피드백