Partager via


IDebugSymbolProvider

Cette interface représente un fournisseur de symboles qui fournit des symboles et les types, les retournant en tant que champs.

IDebugSymbolProvider : IUnknown

Remarques à l'intention des implémenteurs

un fournisseur de symbole doit implémenter cette interface pour fournir le symbole et les informations de type à un évaluateur d'expression.

Remarques pour les appelants

Cette interface est obtenue à l'aide de la fonction d' CoCreateInstance COM (pour les fournisseurs non managés de symboles) ou lorsque vous chargez l'assembly approprié de code managé et en instanciant le fournisseur de symbole en fonction de les informations qui se trouve dans cet assembly. le moteur de débogage instancie le fournisseur de symbole pour fonctionner en coordination avec l'évaluateur d'expression. Consultez l'exemple pour une approche pour instancier cette interface.

méthodes en commande de Vtable

Le tableau suivant répertorie les méthodes d' IDebugSymbolProvider.

Méthode

Description

Initialize

Déconseillé. Ne pas utiliser.

Uninitialize

Déconseillé. Ne pas utiliser.

IDebugSymbolProvider : : GetContainerField

obtient le champ qui contient l'adresse de débogage.

GetField

Déconseillé. Ne pas utiliser.

IDebugSymbolProvider : : GetAddressesFromPosition

Mappe une position de document dans un tableau d'adresses de débogage.

IDebugSymbolProvider : : GetAddressesFromContext

Mappe un contexte de document en un tableau d'adresses de débogage.

IDebugSymbolProvider : : GetContextFromAddress

mappe une adresse de débogage dans un contexte de document.

IDebugSymbolProvider : : GetLanguage

Obtient le langage utilisé pour compiler le code à l'adresse de débogage.

GetGlobalContainer

Déconseillé. Ne pas utiliser.

IDebugSymbolProvider : : GetMethodFieldsByName

obtient le champ représentant un nom de méthode qualifié complet.

IDebugSymbolProvider : : GetClassTypeByName

Obtient le type de champ de la classe qui représente un nom de classe complet.

IDebugSymbolProvider : : GetNamespacesUsedAtAddress

Crée un énumérateur pour les espaces de noms associés à l'adresse de débogage.

IDebugSymbolProvider : : GetTypeByName

mappe un nom de symbole à un type de symbole.

IDebugSymbolProvider : : GetNextAddress

obtient l'adresse de débogage qui suit une adresse donnée de débogage dans une méthode.

Notes

positions de ce document de mappages d'interface dans des adresses de débogage et vice versa.

Configuration requise

en-tête : sh.h

l'espace de noms : Microsoft.VisualStudio.Debugger.Interop

Assembly : Microsoft.VisualStudio.Debugger.Interop.dll

Exemple

Cet exemple montre comment instancier le fournisseur de symbole, selon son GUID (un moteur de débogage doit connaître cette valeur).

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

Voir aussi

Concepts

interfaces de fournisseur de symbole