Partilhar via


IDebugSymbolProvider

Essa interface representa um provedor de símbolo que fornece tipos, retorná-los como campos e símbolos.

IDebugSymbolProvider : IUnknown

Observações para Implementadores

Um provedor de símbolo deve implementar esta interface para fornecer o símbolo e digite informações para um avaliador de expressão.

Observações para chamadores

Essa interface é obtida por meio do COM CoCreateInstance função (para provedores de símbolo não gerenciado) ou carregar o assembly apropriado de código gerenciado e criar uma instância do provedor de símbolo com base nas informações encontradas no assembly. O mecanismo de depuração instancia o provedor de símbolo para trabalhar em coordenação com o avaliador da expressão. Consulte o exemplo para uma abordagem para criar uma instância desta interface.

Métodos na ordem de Vtable

A tabela a seguir mostra os métodos de IDebugSymbolProvider.

Método

Descrição

Initialize

Preterido. Não use.

Uninitialize

Preterido. Não use.

IDebugSymbolProvider::GetContainerField

Obtém o campo que contém o endereço de depuração.

GetField

Preterido. Não use.

IDebugSymbolProvider::GetAddressesFromPosition

Mapeia uma posição do documento em uma matriz de endereços de depuração.

IDebugSymbolProvider::GetAddressesFromContext

Mapeia um contexto de documento em uma matriz de endereços de depuração.

IDebugSymbolProvider::GetContextFromAddress

Mapeia um endereço de depuração em um contexto de documento.

IDebugSymbolProvider::GetLanguage

Obtém a linguagem usada para compilar o código no endereço de depuração.

GetGlobalContainer

Preterido. Não use.

IDebugSymbolProvider::GetMethodFieldsByName

Obtém o campo que representa o nome de um método totalmente qualificado.

IDebugSymbolProvider::GetClassTypeByName

Obtém o tipo de campo da classe que representa um nome de classe totalmente qualificado.

IDebugSymbolProvider::GetNamespacesUsedAtAddress

Cria um enumerador para espaços para nome associados ao endereço de depuração.

IDebugSymbolProvider::GetTypeByName

Mapeia um nome de símbolo para um tipo de símbolo.

IDebugSymbolProvider::GetNextAddress

Obtém o endereço de depuração que segue um endereço determinado depuração em um método.

Comentários

Essa interface mapeia as posições do documento em endereços de depuração e vice-versa.

Requisitos

Cabeçalho: sh.h

Namespace: Microsoft.VisualStudio.Debugger.Interop

Assembly: Microsoft.VisualStudio.Debugger.Interop.dll

Exemplo

Este exemplo mostra como criar uma instância do provedor de símbolo, dado seu GUID (um mecanismo de depuração deve saber esse valor).

// 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);
}

Consulte também

Conceitos

Interfaces do provedor de símbolo