此接口表示提供符号和类型的符号提供程序,返回它们作为字段。
IDebugSymbolProvider : IUnknown
实现者说明
符号提供程序必须实现此接口提供符号和类型信息对表达式计算器。
调用方的说明
此接口获取使用 COM 的 CoCreateInstance 函数 (非托管符号提供程序) 或通过将相应的托管代码程序集和实例化基于信息的符号提供程序在该程序集中找到。 调试引擎实例化符号提供程序与表达式计算器进行交互的方式。 为一个方法参见示例在运行时实例化此接口。
方法按 Vtable 顺序
下表显示 IDebugSymbolProvider方法。
方法 |
说明 |
---|---|
Initialize |
已否决。 不要使用。 |
Uninitialize |
已否决。 不要使用。 |
获取包含调试地址的字段。 |
|
GetField |
已否决。 不要使用。 |
映射一个文档位置到数组调试地址。 |
|
映射到文档上下文设置为数组调试地址。 |
|
映射一个调试地址到文档上下文。 |
|
获取该语言用于生成代码在调试地址。 |
|
GetGlobalContainer |
已否决。 不要使用。 |
获取表示完全限定的方法名称的字段。 |
|
获取表示一个完全限定类名的类字段类型。 |
|
创建命名空间的枚举数与调试地址。 |
|
映射一个符号名到符号类型。 |
|
获取遵循给定的调试在方法的地址的调试地址。 |
备注
此接口映射文档位置到调试地址反之亦然。
要求
标题: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);
}