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