IDiaSession
디버그 기호에 대한 쿼리 컨텍스트를 제공합니다.
구문
IDiaSession : IUnknown
메서드
다음 표에서는 IDiaSession
메서드를 보여 줍니다.
메서드 | 설명 |
---|---|
IDiaSession::get_loadAddress | 이 기호 저장소의 기호에 해당하는 실행 파일의 로드 주소를 검색합니다. put_loadAddress 메서드에 전달된 값과 동일한 값입니다. |
IDiaSession::put_loadAddress | 이 기호 저장소의 기호에 해당하는 실행 파일의 로드 주소를 설정합니다. 참고:IDiaSession 개체를 얻을 때와 개체 사용을 시작하기 전에 반드시 이 메서드를 호출해야 합니다. |
IDiaSession::get_globalScope | 전역 범위에 대한 참조를 검색합니다. |
IDiaSession::getEnumTables | 기호 저장소에 포함된 모든 테이블에 대한 열거자를 검색합니다. |
IDiaSession::getSymbolsByAddr | 정적 위치에 있는 모든 명명된 기호에 대한 열거자를 검색합니다. |
IDiaSession::findChildren | 이름 및 기호 형식과 일치하는 지정된 부모 식별자의 모든 자식 요소를 검색합니다. |
IDiaSession::findSymbolByAddr | 지정된 주소를 포함하거나 지정된 주소와 가장 가까운 지정된 기호 형식을 검색합니다. |
IDiaSession::findSymbolByRVA | 지정된 RVA(상대 가상 주소)를 포함하거나 이와 가장 가까운, 지정된 기호 형식을 검색합니다. |
IDiaSession::findSymbolByVA | 지정된 VA(가상 주소)를 포함하거나 이와 가장 가까운, 지정된 기호 형식을 검색합니다. |
IDiaSession::findSymbolByToken | 지정된 메타데이터 토큰을 포함하는 기호를 검색합니다. |
IDiaSession::symsAreEquiv | 두 기호가 동일한지 확인합니다. |
IDiaSession::symbolById | 고유 식별자를 사용하여 기호를 검색합니다. |
IDiaSession::findSymbolByRVAEx | 지정된 상대 가상 주소 및 오프셋을 포함하거나 이와 가장 가까운, 지정된 기호 형식을 검색합니다. |
IDiaSession::findSymbolByVAEx | 지정된 가상 주소와 오프셋을 포함하거나 이와 가장 가까운, 지정된 기호 형식을 검색합니다. |
IDiaSession::findFile | 컴파일 및 이름으로 원본 파일을 검색합니다. |
IDiaSession::findFileById | 원본 파일 식별자를 사용하여 원본 파일을 검색합니다. |
IDiaSession::findLines | 지정된 컴파일 및 원본 파일 식별자 내에서 줄 번호를 검색합니다. |
IDiaSession::findLinesByAddr | 지정된 주소가 포함된 지정된 컴파일의 줄을 검색합니다. |
IDiaSession::findLinesByRVA | 지정된 상대 가상 주소가 포함된 지정된 컴파일의 줄을 검색합니다. |
IDiaSession::findLinesByVA | 지정된 주소 범위에 포함된 줄의 줄 번호 정보를 찾습니다. |
IDiaSession::findLinesByLinenum | 원본 파일 및 줄 번호를 사용하여 지정된 컴파일의 줄을 검색합니다. |
IDiaSession::findInjectedSource | 기호 저장소에 배치된 원본을 특성 공급자 또는 컴파일 프로세스의 다른 구성 요소를 사용하여 검색합니다. |
IDiaSession::getEnumDebugStreams | 디버그 데이터 스트림의 열거형 시퀀스를 검색합니다. |
IDiaSession::findInlineFramesByAddr | 클라이언트가 지정된 주소의 모든 인라인 프레임에서 반복될 수 있게 하는 열거형을 검색합니다. |
IDiaSession::findInlineFramesByRVA | 클라이언트가 지정된 RVA(상대 가상 주소)의 모든 인라인 프레임에서 반복될 수 있게 하는 열거형을 검색합니다. |
IDiaSession::findInlineFramesByVA | 클라이언트가 지정된 VA(가상 주소)의 모든 인라인 프레임에서 반복될 수 있게 하는 열거형을 검색합니다. |
IDiaSession::findInlineeLines | 클라이언트에서 지정된 부모 기호에 의해 직접 또는 간접적으로 인라인된 모든 함수의 줄 번호 정보를 반복할 수 있도록 하는 열거형을 검색합니다. |
IDiaSession::findInlineeLinesByAddr | 지정된 부모 기호를 사용하여 직간접적으로 인라인되었으며 지정된 주소 범위 내에 포함된 모든 함수의 줄 번호 정보를 클라이언트에서 반복할 수 있게 하는 열거형을 검색합니다. |
IDiaSession::findInlineeLinesByRVA | 지정된 부모 기호를 사용하여 직간접적으로 인라인되었으며 지정된 RVA(상대 가상 주소) 내에 포함된 모든 함수의 줄 번호 정보를 클라이언트에서 반복할 수 있게 하는 열거형을 검색합니다. |
IDiaSession::findInlineeLinesByVA | 지정된 부모 기호를 사용하여 직간접적으로 인라인되었으며 지정된 VA(가상 주소) 내에 포함된 모든 함수의 줄 번호 정보를 클라이언트에서 반복할 수 있게 하는 열거형을 검색합니다. |
IDiaSession::findInlineeLinesByLinenum | 클라이언트가 지정된 소스 파일 및 줄 번호에서 직접 또는 간접적으로 인라인되는 모든 함수의 줄 번호 정보를 반복할 수 있도록 하는 열거형을 검색합니다. |
IDiaSession::findInlineesByName | 클라이언트가 지정된 이름과 일치하는 모든 인라인 함수의 줄 번호 정보를 반복할 수 있게 하는 열거형을 검색합니다. |
IDiaSession::findSymbolsForAcceleratorPointerTag | 부모 Accelerator 스텁 함수에 있는, 지정된 태그 값이 해당하는 변수에 대한 기호의 열거형을 반환합니다. |
IDiaSession::findSymbolsByRVAForAcceleratorPointerTag | 해당하는 태그 값이 지정되면 이 메서드는 지정된 상대 가상 주소에 지정된 부모 Accelerator 스텁 함수에 포함된 기호의 열거형을 반환합니다. |
IDiaSession::findAcceleratorInlineesByName | 지정된 인라인 함수 이름에 해당하는 인라인 프레임에 대한 기호의 열거형을 반환합니다. |
IDiaSession::findAcceleratorInlineesByLinenum | 지정된 원본 위치에 해당하는 인라인 프레임에 대한 기호의 열거형을 반환합니다. |
설명
반드시 IDiaSession
개체를 만든 후 IDiaSession::put_loadAddress 메서드를 호출해야 하며, put_loadAddress
메서드에 전달된 값은 액세스 가능한 모든 VA(가상 주소) 속성에 대해 0이 아니어야 합니다. 로드 주소는 디버깅 중인 실행 파일을 로드한 프로그램에서 제공됩니다. 예를 들어 Win32 함수 GetModuleInformation
을 호출하여 (실행 파일에 대한 핸들이 지정된 경우) 실행 파일의 로드 주소를 검색할 수 있습니다.
예시
이 예제에서는 IDiaSession
인터페이스를 DIA SDK 일반 초기화의 일부로서 가져오는 방법을 보여줍니다.
CComPtr<IDiaDataSource> pSource;
ComPtr<IDiaSession> psession;
void InitializeDIA(const char *szFilename)
{
HRESULT hr = CoCreateInstance( CLSID_DiaSource,
NULL,
CLSCTX_INPROC_SERVER,
__uuidof( IDiaDataSource ),
(void **) &pSource);
if (FAILED(hr))
{
Fatal("Could not CoCreate CLSID_DiaSource. Register msdia80.dll." );
}
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" );
}
}
if ( FAILED( pSource->openSession( &psession ) ) )
{
Fatal( "openSession" );
}
}
요구 사항
헤더: Dia2.h
라이브러리: diaguids.lib
DLL: msdia80.dll