IDebugSymbolProvider

Essa interface representa um provedor de símbolos que fornece símbolos e tipos, retornando-os como campos.

Syntax

IDebugSymbolProvider : IUnknown

Notas para implementadores

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

Observações para chamadores

Essa interface é obtida usando CoCreateInstance a função de com (para provedores de símbolos não gerenciados) ou carregando o assembly de código gerenciado apropriado e instanciando o provedor de símbolos com base nas informações encontradas nesse assembly. O mecanismo de depuração instancia o provedor de símbolos para trabalhar em coordenação com o avaliador de expressão. Consulte o exemplo de uma abordagem para instanciar essa interface.

Métodos em ordem 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.
GetContainerField Obtém o campo que contém o endereço de depuração.
GetField Preterido. Não use.
GetAddressesFromPosition Mapas uma posição de documento em uma matriz de endereços de depuração.
GetAddressesFromContext Mapas um contexto de documento em uma matriz de endereços de depuração.
GetContextFromAddress Mapas um endereço de depuração em um contexto de documento.
GetLanguage Obtém a linguagem usada para compilar o código no endereço de depuração.
GetGlobalContainer Preterido. Não use.
GetMethodFieldsByName Obtém o campo que representa um nome de método totalmente qualificado.
GetClassTypeByName Obtém o tipo de campo de classe que representa um nome de classe totalmente qualificado.
GetNamespacesUsedAtAddress Cria um enumerador para namespaces associados ao endereço de depuração.
GetTypeByName Mapas um nome de símbolo para um tipo de símbolo.
GetNextAddress Obtém o endereço de depuração que segue um determinado endereço de 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ímbolos, 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);
}

Confira também