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. |
Obtém o campo que contém o endereço de depuração. |
|
GetField |
Preterido. Não use. |
Mapeia uma posição do documento em uma matriz de endereços de depuração. |
|
Mapeia um contexto de documento em uma matriz de endereços de depuração. |
|
Mapeia um endereço de depuração em um contexto de documento. |
|
Obtém a linguagem usada para compilar o código no endereço de depuração. |
|
GetGlobalContainer |
Preterido. Não use. |
Obtém o campo que representa o nome de um método totalmente qualificado. |
|
Obtém o tipo de campo da classe que representa um nome de classe totalmente qualificado. |
|
Cria um enumerador para espaços para nome associados ao endereço de depuração. |
|
Mapeia um nome de símbolo para um tipo de símbolo. |
|
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);
}