IDebugSymbolProvider

此接口表示提供符号和类型的符号提供程序,返回它们作为字段。

IDebugSymbolProvider : IUnknown

实现者说明

符号提供程序必须实现此接口提供符号和类型信息对表达式计算器。

调用方的说明

此接口获取使用 COM 的 CoCreateInstance 函数 (非托管符号提供程序) 或通过将相应的托管代码程序集和实例化基于信息的符号提供程序在该程序集中找到。 调试引擎实例化符号提供程序与表达式计算器进行交互的方式。 为一个方法参见示例在运行时实例化此接口。

方法按 Vtable 顺序

下表显示 IDebugSymbolProvider方法。

方法

说明

Initialize

已否决。 不要使用。

Uninitialize

已否决。 不要使用。

IDebugSymbolProvider:: GetContainerField

获取包含调试地址的字段。

GetField

已否决。 不要使用。

IDebugSymbolProvider:: GetAddressesFromPosition

映射一个文档位置到数组调试地址。

IDebugSymbolProvider:: GetAddressesFromContext

映射到文档上下文设置为数组调试地址。

IDebugSymbolProvider:: GetContextFromAddress

映射一个调试地址到文档上下文。

IDebugSymbolProvider:: GetLanguage

获取该语言用于生成代码在调试地址。

GetGlobalContainer

已否决。 不要使用。

IDebugSymbolProvider:: GetMethodFieldsByName

获取表示完全限定的方法名称的字段。

IDebugSymbolProvider:: GetClassTypeByName

获取表示一个完全限定类名的类字段类型。

IDebugSymbolProvider:: GetNamespacesUsedAtAddress

创建命名空间的枚举数与调试地址。

IDebugSymbolProvider:: GetTypeByName

映射一个符号名到符号类型。

IDebugSymbolProvider:: 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);
}

请参见

概念

符号提供程序接口