IDiaSession
提供一个查询环境以调试符号。
IDiaSession : IUnknown
方法
下表显示了 IDiaSession 的方法。
方法 |
说明 |
---|---|
检索对应于此符号存储的符号可执行文件的加载地址。 这是传递给 put_loadAddress 方法的相同值。 |
|
。设置在此符号存储区中对应的符号的可执行文件的下载地址。
说明
当您获取 IDiaSession 对象时和你开始使用该对象前,调用此方法是重要的。
|
|
在全局范围内索引引用。 |
|
检索在符号存储区中包含的所有表的枚举数。 |
|
在静态位置检索所有命名符号的枚举数。 |
|
检索与名称和符号类型匹配的一个指定的父标识符的所有子级。 |
|
检索一个指定的符号类型,该符号类型包含,或者是接近,一个指定的地址。 |
|
检索一个指定的符号类型,该符号类型包含,或者是接近,一个指定的相对虚拟地址(RVA)。 |
|
检索一个指定的符号类型,该符号类型包含,或者是接近,一个指定的虚拟地址(VA)。 |
|
检索包含符号指定的元数据标记的符号。 |
|
检查两个符号是否等效。 |
|
通过其唯一标识符检索符号。 |
|
检索一个指定的符号类型,该符号类型包含,或者是接近,一个指定的相对虚拟地址和偏移。 |
|
检索一个指定的符号类型,该符号类型包含,或者是接近,一个指定的虚拟地址和偏移。 |
|
通过编译和名称检索源文件。 |
|
通过源文件标识符检索源文件。 |
|
在指定的编译和源文件标识符中检索行号。 |
|
。在包含指定地址的指定编译中检索行。 |
|
在包含指定相对虚拟地址的指定编译中检索行。 |
|
在指定的地址范围内的行中,查找行号信息。 |
|
在指定的编译和源文件标识符和行号中检索行号。 |
|
检索源数据,该数据由属性提供程序或其他编译进程的组件放置到符号存储里。 |
|
检索调试数据流的一个枚举序列。 |
|
检索允许客户端通过所有在特定地址的内联帧重复的枚举。 |
|
检索允许客户端通过所有在指定的相对虚拟地址(RVA)的内联帧重复的枚举。 |
|
检索允许客户端通过所有在指定的虚拟地址(VA)的内联帧重复的枚举。 |
|
检索允许客户端通过所有功能行号信息重复内联,直接或间接,由指定的父符号的枚举。 |
|
检索允许客户端通过所有功能行号信息重复按指定的父符号内联,直接或间接,并在指定的地址范围内包含的枚举。 |
|
检索允许客户端通过所有功能行号信息重复按指定的父符号内联,直接或间接,并在指定的相对虚拟地址(RVA)中包含的枚举。 |
|
检索允许客户端通过所有功能行号信息重复按指定的父符号内联,直接或间接,并在指定的虚拟地址(VA)中包含的枚举。 |
|
检索允许客户端通过所有功能行号信息循环访问指定的源文件和行号内联,直接或间接,的枚举。 |
|
检索允许客户端通过所有内联函数行号信息重复与指定的名称的枚举。 |
|
返回符号的枚举变量的指定标记值对应于父快捷键存根功能。 |
|
将一个对应的标记值,此方法返回某个指定的相对虚拟地址的指定父快捷键存根函数包含符号的枚举。 |
|
返回符号的枚举内联帧的具有指定的内联函数名称相对应。 |
|
返回符号的枚举对应于指定的源位置的内联帧的。 |
备注
在创建 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