Sdílet prostřednictvím


IDiaSession

Poskytuje kontext dotazu pro symboly ladění.

Syntaxe

IDiaSession : IUnknown

Metody

Následující tabulka ukazuje metody IDiaSession.

metoda Popis
IDiaSession::get_loadAddress Načte adresu načtení spustitelného souboru, který odpovídá symbolům v tomto úložišti symbolů. Jedná se o stejnou hodnotu, která byla předána metodě put_loadAddress .
IDiaSession::put_loadAddress Nastaví adresu načtení spustitelného souboru, který odpovídá symbolům v tomto úložišti symbolů. Poznámka: Je důležité volat tuto metodu při získání objektu IDiaSession a před zahájením používání objektu.
IDiaSession::get_globalScope Načte odkaz na globální obor.
IDiaSession::getEnumTables Načte enumerátor pro všechny tabulky obsažené v úložišti symbolů.
IDiaSession::getSymbolsByAddr Načte enumerátor pro všechny pojmenované symboly ve statických umístěních.
IDiaSession::findChildren Načte všechny podřízené položky zadaného nadřazeného identifikátoru, které odpovídají názvu a typu symbolu.
IDiaSession::findSymbolByAddr Načte zadaný typ symbolu, který obsahuje zadanou adresu nebo je k ho nejblíže.
IDiaSession::findSymbolByRVA Načte zadaný typ symbolu, který obsahuje zadanou relativní virtuální adresu (RVA) nebo je k ho nejblíže.
IDiaSession::findSymbolByVA Načte zadaný typ symbolu, který obsahuje zadanou virtuální adresu (VA) nebo je k ho nejblíže.
IDiaSession::findSymbolByToken Načte symbol, který obsahuje zadaný token metadat.
IDiaSession::symsAreEquiv Zkontroluje, jestli jsou ekvivalentní dva symboly.
IDiaSession::symbolById Načte symbol podle jeho jedinečného identifikátoru.
IDiaSession::findSymbolByRVAEx Načte zadaný typ symbolu, který obsahuje nebo je nejblíže zadané relativní virtuální adrese a posunu.
IDiaSession::findSymbolByVAEx Načte zadaný typ symbolu, který obsahuje nebo je nejblíže zadané virtuální adrese a posunu.
IDiaSession::findFile Načte zdrojový soubor podle compilandu a názvu.
IDiaSession::findFileById Načte zdrojový soubor podle identifikátoru zdrojového souboru.
IDiaSession::findLines Načte čísla řádků v zadaném identifikátoru compilandu a zdrojového souboru.
IDiaSession::findLinesByAddr Načte řádky v zadaném compilandu, které obsahují zadanou adresu.
IDiaSession::findLinesByRVA Načte řádky v zadaném compilandu, které obsahují zadanou relativní virtuální adresu.
IDiaSession::findLinesByVA Vyhledá informace o čísle řádku pro řádky obsažené v zadaném rozsahu adres.
IDiaSession::findLinesByLinenum Načte řádky v zadaném compilandu podle zdrojového souboru a čísla řádku.
IDiaSession::findInjectedSource Načte zdroj, který byl umístěn do úložiště symbolů zprostředkovateli atributů nebo jinými komponentami procesu kompilace.
IDiaSession::getEnumDebugStreams Načte výčtovou sekvenci datových proudů ladění.
IDiaSession::findInlineFramesByAddr Načte výčet, který umožňuje klientovi iterovat všechny vložené rámce na dané adrese.
IDiaSession::findInlineFramesByRVA Načte výčet, který umožňuje klientovi iterovat všechny vložené rámce na zadané relativní virtuální adrese (RVA).
IDiaSession::findInlineFramesByVA Načte výčet, který umožňuje klientovi iterovat všechny vložené rámce na zadané virtuální adrese (VA).
IDiaSession::findInlineeLines Načte výčet, který klientovi umožňuje iterovat informace o čísle řádku všech funkcí, které jsou vloženy přímo nebo nepřímo zadaným nadřazeným symbolem.
IDiaSession::findInlineeLinesByAddr Načte výčet, který umožňuje klientovi iterovat informace o čísle řádku všech funkcí, které jsou vloženy přímo nebo nepřímo zadaným nadřazeným symbolem a jsou obsaženy v zadaném rozsahu adres.
IDiaSession::findInlineeLinesByRVA Načte výčet, který umožňuje klientovi iterovat informace o čísle řádku všech funkcí, které jsou vloženy přímo nebo nepřímo zadaným nadřazeným symbolem a jsou obsaženy v zadané relativní virtuální adrese (RVA).
IDiaSession::findInlineeLinesByVA Načte výčet, který umožňuje klientovi iterovat informace o čísle řádku všech funkcí, které jsou vloženy přímo nebo nepřímo zadaným nadřazeným symbolem a jsou obsaženy v zadané virtuální adrese (VA).
IDiaSession::findInlineeLinesByLinenum Načte výčet, který umožňuje klientovi iterovat informace o čísle řádku všech funkcí, které jsou vloženy přímo nebo nepřímo, v zadaném zdrojovém souboru a čísle řádku.
IDiaSession::findInlineesByName Načte výčet, který umožňuje klientovi iterovat informace o čísle řádku všech vložených funkcí, které odpovídají zadanému názvu.
IDiaSession::findSymbolsForAcceleratorPointerTag Vrátí výčet symbolů pro proměnnou, kterou zadaná hodnota značky odpovídá ve funkci zástupných procedur nadřazeného akcelerátoru.
IDiaSession::findSymbolsByRVAForAcceleratorPointerTag Vzhledem k odpovídající hodnotě značky tato metoda vrátí výčet symbolů obsažených v zadané nadřazené funkci zástupných procedur akcelerátoru na zadané relativní virtuální adrese.
IDiaSession::findAcceleratorInlineesByName Vrátí výčet symbolů pro vložené rámce odpovídající zadanému názvu vložené funkce.
IDiaSession::findAcceleratorInlineesByLinenum Vrátí výčet symbolů pro vložené rámce, které odpovídají zadanému zdrojovému umístění.

Poznámky

Po vytvoření IDiaSession objektu je důležité volat metodu IDiaSession::p ut_loadAddress a hodnota předaná put_loadAddress metodě musí být nenulová, aby všechny vlastnosti virtuální adresy (VA) symbolů byly přístupné. Načítá adresa pochází z libovolného programu načteného spustitelného souboru, který je laděný. Můžete například volat funkci GetModuleInformation Win32, která načte adresu načtení spustitelného souboru vzhledem ke popisovači spustitelného souboru.

Příklad

Tento příklad ukazuje, jak získat IDiaSession rozhraní jako součást obecné inicializace sady 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" );
    }
}

Požadavky

Hlavička: Dia2.h

Knihovna: diaguids.lib

DLL: msdia80.dll

Viz také