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é
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro