IDiaSessionEx
Udostępnia rozszerzony kontekst zapytania dla symboli debugowania.
Składnia
IDiaSessionEx : IDiaSession
Metody
W poniższej tabeli przedstawiono metody .IDiaSessionEx
Metoda | opis |
---|---|
IDiaSessionEx::isFastLinkPDB |
Pobiera wartość logiczną wskazującą, że informacje o debugowaniu źródłowym zostały wygenerowane za pomocą polecenia /DEBUG:fastlink . |
IDiaSessionEx::isPortablePDB |
Pobiera wartość logiczną wskazującą, że informacje o debugowaniu źródłowym korzystają z przenośnego formatu PDB. |
"IDiaSessionEx::getSourceLinkInfo" | Pobiera wyliczenie informacji o linku źródłowym. |
Uwagi
Należy wywołać metodę po utworzeniu IDiaSession::put_loadAddress
IDiaSession
obiektu — a wartość przekazana do put_loadAddress
metody musi być inna niż zero — aby wszystkie właściwości wirtualnego adresu (VA) były dostępne. Adres ładowania pochodzi z dowolnego programu załadowanego pliku wykonywalnego debugowanego. Można na przykład wywołać funkcję GetModuleInformation
Win32, aby pobrać adres ładowania pliku wykonywalnego, biorąc pod uwagę uchwyt pliku wykonywalnego.
Ponieważ IDiaSessionEx
dziedziczy z IDiaSession
klasy , obiekt alos ma wszystkie te same metody i może zostać przekazany do dowolnej funkcji, która akceptuje IDiaSession
element .
Przykład
W tym przykładzie pokazano, jak uzyskać IDiaSessionEx
interfejs w ramach ogólnej inicjalizacji zestawu SDK dostępu do interfejsu debugowania (DIA).
CComPtr<IDiaDataSource> pSource;
ComPtr<IDiaSessionEx> psessionex;
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 msdia140.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" );
}
}
ComPtr<IDiaSession> psession;
if ( FAILED( pSource->openSession( &psession ) ) )
{
Fatal( "openSession" );
}
if ( FAILED( psession.QueryInterface(&psessionex) ) )
{
Fatal( "Failed to upgrade from IDiaSession to IDiaSessionEx, are you using an older version of msdia140.dll?" );
}
}
Wymagania
Nagłówek: Dia2.h
Biblioteka: diaguids.lib
BIBLIOTEKA DLL: msdia140.dll