IDebugSymbolProvider
此接口表示一个符号提供程序,该提供程序提供符号和类型,并将其作为字段返回。
语法
IDebugSymbolProvider : IUnknown
实现者须知
符号提供程序必须实现此接口,以便向表达式计算器提供符号和类型信息。
对调用者的说明
此接口通过使用 COM 的 CoCreateInstance
函数(对于非托管符号提供程序)或加载适当的托管代码程序集并基于该程序集中找到的信息实例化符号提供程序来获取。 调试引擎实例化符号提供程序,以便与表达式计算器协调工作。 有关实例化此接口的一种方法,请参阅示例。
Vtable 顺序中的方法
下表显示了 IDebugSymbolProvider
方法。
方法 | 说明 |
---|---|
Initialize |
已弃用。 请勿使用。 |
Uninitialize |
已弃用。 请勿使用。 |
GetContainerField | 获取包含调试地址的字段。 |
GetField |
已弃用。 请勿使用。 |
GetAddressesFromPosition | 将文档位置地图调试地址数组。 |
GetAddressesFromContext | 将文档上下文地图到调试地址数组中。 |
GetContextFromAddress | 地图文档上下文中的调试地址。 |
GetLanguage | 获取用于在调试地址编译代码的语言。 |
GetGlobalContainer |
已弃用。 请勿使用。 |
GetMethodFieldsByName | 获取表示完全限定的方法名称的字段。 |
GetClassTypeByName | 获取表示完全限定类名的类字段类型。 |
GetNamespacesUsedAtAddress | 为与调试地址关联的命名空间创建枚举器。 |
GetTypeByName | 将符号名称地图符号类型。 |
GetNextAddress | 获取方法中给定调试地址后面的调试地址。 |
备注
此接口将文档位置映射到调试地址,反之亦然。
要求
标头:sh.h
命名空间:Microsoft.VisualStudio.Debugger.Interop
程序集:Microsoft.VisualStudio.Debugger.Interop.dll
示例
此示例显示如何实例化符号提供程序(给定其 GUID(调试引擎必须知道此值)。
// A debug engine uses its own symbol provider and would know the GUID
// of that provider.
IDebugSymbolProvider *GetSymbolProvider(GUID *pSymbolProviderGuid)
{
// This is typically defined globally. For this example, it is
// defined here.
static const WCHAR strRegistrationRoot[] = L"Software\\Microsoft\\VisualStudio\\8.0Exp";
IDebugSymbolProvider *pProvider = NULL;
if (pSymbolProviderGuid != NULL) {
CLSID clsidProvider = { 0 };
::GetSPMetric(*pSymbolProviderGuid,
storetypeFile,
metricCLSID,
&clsidProvider,
strRegistrationRoot);
if (IsEqualGUID(clsidProvider,GUID_NULL)) {
// No file type provider, try metadata provider.
::GetSPMetric(*pSymbolProviderGuid,
::storetypeMetadata,
metricCLSID,
&clsidProvider,
strRegistrationRoot);
}
if (!IsEqualGUID(clsidProvider,GUID_NULL)) {
CComPtr<IDebugSymbolProvider> spSymbolProvider;
spSymbolProvider.CoCreateInstance(clsidProvider);
if (spSymbolProvider != NULL) {
pProvider = spSymbolProvider.Detach();
}
}
}
return(pProvider);
}