IDiaSession

为调试符号提供查询上下文。

语法

IDiaSession : IUnknown

方法

下表显示了 IDiaSession的方法。

方法 描述
IDiaSession::get_loadAddress 检索与此符号存储中的符号对应的可执行文件的加载地址。 此值与传递给 put_loadAddress 方法的值相同。
IDiaSession::put_loadAddress 设置与此符号存储中的符号相对应的可执行文件的加载地址。 注意: 获取 IDiaSession 对象以及开始使用对象之前调用此方法非常重要。
IDiaSession::get_globalScope 检索对全局范围的引用。
IDiaSession::getEnumTables 检索符号存储中包含的所有表的枚举数。
IDiaSession::getSymbolsByAddr 检索静态位置上所有命名符号的枚举器。
IDiaSession::findChildren 检索与名称和符号类型匹配的指定父标识符的所有子级。
IDiaSession::findChildrenEx 检索与名称和符号类型匹配的指定父标识符的所有子级,包括优化的局部变量。
IDiaSession::findChildrenExByAddr 检索与名称和符号类型匹配的指定父标识符的所有子级,包括优化的局部变量、包含或最接近指定地址的局部变量。
IDiaSession::findChildrenExByVA 检索与名称和符号类型匹配的指定父标识符的所有子级,包括优化的局部变量、包含或最接近指定虚拟地址(VA) 的局部变量。
IDiaSession::findChildrenExByRVA 检索与名称和符号类型匹配的指定父标识符的所有子级,包括优化的局部变量、包含或最接近指定相对虚拟地址(RVA) 的局部变量。
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::findAcceleratorInlineesByLinenum 返回对应于指定源位置的内联帧的符号枚举。
IDiaSession::findSymbolsForAcceleratorPointerTag 返回指定标记值在父加速器存根函数中对应于的变量的符号枚举。
IDiaSession::findSymbolsByRVAForAcceleratorPointerTag 给定相应的标记值时,此方法将返回指定相对虚拟地址上指定父加速器存根函数中包含的符号的枚举。
IDiaSession::findAcceleratorInlineesByName 返回对应于指定内联函数名称的内联帧的符号枚举。
IDiaSession::addressForVA 返回指定虚拟地址的等效地址(VA)。
IDiaSession::addressForRVA 返回指定相对虚拟地址(RVA)的等效地址。
IDiaSession::findILOffsetsByAddr 检索一个枚举,该枚举允许客户端循环访问指定地址范围内的 MSIL 偏移量。
IDiaSession::findILOffsetsByRVA 检索一个枚举,该枚举允许客户端循环访问指定相对虚拟地址 (RVA) 范围内的 MSIL 偏移量。
IDiaSession::findILOffsetsByVA 检索一个枚举,该枚举允许客户端循环访问指定虚拟地址 (VA) 范围内的 MSIL 偏移量。
IDiaSession::findInputAssemblyFiles 检索允许客户端循环访问 .NET Native 输入程序集文件的枚举。
IDiaSession::findInputAssembly 按索引检索 .NET 本机输入程序集文件。
IDiaSession::findInputAssemblyById 按唯一标识符检索 .NET 本机输入程序集文件。
IDiaSession::getFuncMDTokenMapSize 检索 .NET Native 元数据函数令牌映射的大小(以字节为单位)。
IDiaSession::getFuncMDTokenMap 检索 .NET Native 元数据函数令牌映射的内容。
IDiaSession::getTypeMDTokenMapSize 检索 .NET 本机元数据类型令牌映射的大小(以字节为单位)。
IDiaSession::getTypeMDTokenMap 检索 .NET 本机元数据类型令牌映射的内容。
IDiaSession::getNumberOfFunctionFragments_VA 检索指定虚拟地址(VA)处函数的不和谐片段数。
IDiaSession::getNumberOfFunctionFragments_RVA 检索指定相对虚拟地址(RVA)处函数的不和谐片段数。
IDiaSession::getFunctionFragments_VA 检索指定虚拟地址(VA)处函数的不和谐片段的地址和长度。
IDiaSession::getFunctionFragments_RVA 检索指定相对虚拟地址(RVA)处函数的不和谐片段的地址和长度。
IDiaSession::getExports 检索所有导出符号的枚举器。
IDiaSession::getHeapAllocationSites 检索所有 SymTagHeapAllocationSite 符号的枚举器。
IDiaSession::findInputAssemblyFile 检索指定符号的父级的 .NET Native 输入程序集文件。

言论

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

另请参阅