.Pdb 파일 쿼리
프로그램 데이터베이스 파일 (확장명.pdb) 종류와 수집 과정의 컴파일 및 프로젝트를 연결 하는 기호화 된 디버깅 정보를 포함 하는 이진 파일이입니다.PDB 파일에는 C/C++ 프로그램을 컴파일할 때 생성 됩니다 /ZI 또는 /Zi 또는 Visual Basic, Visual C#, 또는 JScript 와 프로그램의 /debug 옵션.개체 파일에 디버깅 정보를.pdb 파일에 대 한 참조를 포함 합니다.Pdb 파일에 대 한 자세한 내용은 [OBSOLETE] 프로그램 데이터베이스 파일(C++).DIA 응용 프로그램 다음과 같은 일반적인 단계를 다양 한 기호, 개체 및 실행 파일 이미지 내의 데이터 요소에 대 한 자세한 정보를 얻을 수 있습니다.
.Pdb 파일을 쿼리.
작성 하 여 데이터 소스를 얻기를 IDiaDataSource 인터페이스입니다.
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." ); }
호출 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" ); } }
호출 IDiaDataSource::openSession 열 수는 IDiaSession 디버깅 정보에 액세스할 수 있습니다.
CComPtr<IDiaSession> psession; if ( FAILED( pSource->openSession( &psession ) ) ) { Fatal( "openSession" ); }
메서드를 사용 하 여 IDiaSession 기호를 데이터 원본에 대해 쿼리 합니다.
CComPtr<IDiaSymbol> pglobal; if ( FAILED( psession->get_globalScope( &pglobal) ) ) { Fatal( "get_globalScope" ); }
사용은 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. }