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