共用方式為


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) (RVA)。

IDiaSession::findSymbolByVA

擷取包含所指定數目的符號型別,或者是最接近時,指定的相對虛擬位址 (RVA) (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) (RVA)內嵌框架逐一查看的列舉值。

IDiaSession::findInlineFramesByVA

擷取可讓用戶端透過所有在指定的相對虛擬位址(RVA) (VA)內嵌框架逐一查看的列舉值。

IDiaSession::findInlineeLines

擷取可讓用戶端透過指定的行號資訊重複內嵌,直接或間接,根據指定的父代符號的列舉型別。

IDiaSession::findInlineeLinesByAddr

擷取可讓用戶端透過指定的行號資訊逐一查看由指定之父代符號內嵌,直接或間接,以及在指定的位址範圍內的列舉型別。

IDiaSession::findInlineeLinesByRVA

擷取可讓用戶端透過指定的行號資訊逐一查看由指定之父代符號內嵌,直接或間接,以及在指定的相對虛擬位址 (RVA) (RVA) 中的列舉型別。

IDiaSession::findInlineeLinesByVA

擷取可讓用戶端透過指定的行號資訊逐一查看由指定之父代符號內嵌,直接或間接,以及在指定的相對虛擬位址 (RVA) (VA) 中的列舉型別。

IDiaSession::findInlineeLinesByLinenum

擷取可讓用戶端透過指定的行號資訊會逐一查看指定的原始程式檔和行號內嵌,直接或間接,的列舉型別。

IDiaSession::findInlineesByName

擷取可讓用戶端透過所有內嵌 (Inline) 函式行號資訊重複符合指定名稱的列舉型別。

IDiaSession::findSymbolsForAcceleratorPointerTag

傳回符號的列舉型別變數的指定標記值對應父快速 Stub 函式。

IDiaSession::findSymbolsByRVAForAcceleratorPointerTag

將對應的標記值,這個方法會傳回在指定的相對虛擬位址的指定父快速 Stub 函式包含符號的列舉型別。

IDiaSession::findAcceleratorInlineesByName

傳回符號的列舉型別內嵌框架的與指定的內嵌函式名稱對應。

IDiaSession::findAcceleratorInlineesByLinenum

傳回符號的列舉型別對應至指定之來源位置的內嵌的框架。

備註

在建立物件之後 IDiaSession —和值傳遞至 put_loadAddress 方法必須是非零—符號所有虛擬位址 (VA) 屬性的是呼叫 IDiaSession::put_loadAddress 方法很重要的存取。 載入位址來自任何程式載入偵錯的可執行檔。 例如,可以呼叫 Win32 函式 GetModuleInformation 擷取可執行的載入位址將控制代碼可執行檔。

範例

做為 DIA SDK 的一般初始化的一部分,這個範例顯示如何取得 IDiaSession 介面。

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

請參閱

工作

查詢 .Pdb 檔案

參考

Exe

IDiaAddressMap

IDiaDataSource

IDiaDataSource::openSession

IDiaSymbol::findChildren

其他資源

介面 (偵錯介面存取 SDK)

概觀 (偵錯介面存取 SDK)