IDebugSymbolProvider

Этот интерфейс представляет поставщик символов, который предоставляет символы и типы, возвращая их в виде полей.

Синтаксис

IDebugSymbolProvider : IUnknown

Примечания для разработчиков

Поставщик символов должен реализовать этот интерфейс для предоставления сведений о символах и типах вычислителю выражений.

Заметки для вызывающих абонентов

Этот интерфейс получается с помощью функции COM CoCreateInstance (для неуправляемых поставщиков символов) или путем загрузки соответствующей сборки управляемого кода и создания экземпляра поставщика символов на основе сведений, найденных в этой сборке. Модуль отладки создает экземпляр поставщика символов для работы в координации с вычислителем выражений. Пример для создания экземпляра этого интерфейса см. в примере.

Методы в порядке таблицы Vtable

В следующей таблице показаны методы IDebugSymbolProvider.

Метод Description
Initialize Устарело. Не используйте.
Uninitialize Устарело. Не используйте.
GetContainerField Возвращает поле, содержащее адрес отладки.
GetField Устарело. Не используйте.
GetAddressesFromPosition Карты положение документа в массив отладочных адресов.
GetAddressesFromContext Карты контекст документа в массив отладочных адресов.
GetContextFromAddress Карты адрес отладки в контекст документа.
GetLanguage Возвращает язык, используемый для компиляции кода по адресу отладки.
GetGlobalContainer Устарело. Не используйте.
GetMethodFieldsByName Возвращает поле, представляющее полное имя метода.
GetClassTypeByName Возвращает тип поля класса, представляющий полное имя класса.
GetNamespacesUsedAtAddress Создает перечислитель для пространств имен, связанных с адресом отладки.
GetTypeByName Карты имя символа в тип символа.
GetNextAddress Возвращает адрес отладки, следующий за заданным адресом отладки в методе.

Замечания

Этот интерфейс сопоставляет позиции документов с адресами отладки и наоборот.

Requirements

Заголовок: 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);
}

См. также