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 返回指定的标记值在父级 Accelerator 存根函数中对应的变量的符号枚举。
IDiaSession::findSymbolsByRVAForAcceleratorPointerTag 给定相应的标记值后,此方法将在指定的相对虚拟地址返回指定父级 Accelerator 存根函数中包含的符号的枚举。
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

另请参阅