Compartilhar via


IDebugSymbolProvider

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

Sintaxe

IDebugSymbolProvider : IUnknown

Notas para implementadores

Um provedor de símbolos 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 a função COM (para provedores de símbolos não gerenciados CoCreateInstance ) 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 para obter uma abordagem para instanciar essa interface.

Métodos na 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 Mapeia uma posição do documento em uma matriz de endereços de depuração.
GetAddressesFromContext Mapeia um contexto de documento em uma matriz de endereços de depuração.
GetContextFromAddress Mapeia um endereço de depuração para 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 Mapeia 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 dos documentos em endereços de depuração e vice-versa.

Requisitos

Cabeçalho: sh.h

Espaço para nome: Microsoft.VisualStudio.Debugger.Interop

Assembly: Microsoft.VisualStudio.Debugger.Interop.dll

Exemplo

Este exemplo mostra como instanciar o 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