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