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

返回符号的枚举变量的指定标记值对应于父快捷键存根功能。

IDiaSession::findSymbolsByRVAForAcceleratorPointerTag

将一个对应的标记值,此方法返回某个指定的相对虚拟地址的指定父快捷键存根函数包含符号的枚举。

IDiaSession::findAcceleratorInlineesByName

返回符号的枚举内联帧的具有指定的内联函数名称相对应。

IDiaSession::findAcceleratorInlineesByLinenum

返回符号的枚举对应于指定的源位置的内联帧的。

备注

在创建 IDiaSession 对象之后调用IDiaSession::put_loadAddress 方法给可访问的符号的所有虚拟地址 (VA) 属性是重要的,—传递给 put_loadAddress 方法的值必须是非零的。 加载地址来自任意加载的正在调试的可执行的程序。 例如,可以调用 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

请参见

任务

查询 .Pdb 文件

参考

Exe

IDiaAddressMap

IDiaDataSource

IDiaDataSource::openSession

IDiaSymbol::findChildren

其他资源

接口(调试接口访问 SDK)

概述(调试接口访问 SDK)