Partager via


IDebugSymbolProvider

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

Syntaxe

IDebugSymbolProvider : IUnknown

Remarques pour les implémenteurs

Un fournisseur de symboles doit implémenter cette interface pour fournir des symboles et des informations de type à un évaluateur d’expression.

Remarques pour les appelants

Cette interface est obtenue à l’aide de la CoCreateInstance fonction COM (pour les fournisseurs de symboles non managés) ou en chargeant l’assembly de code managé approprié et en instanciant le fournisseur de symboles en fonction des informations trouvées dans cet assembly. Le moteur de débogage instancie le fournisseur de symboles à travailler en coordination avec l’évaluateur d’expression. Consultez l’exemple d’une approche permettant d’instancier cette interface.

Méthodes dans l'ordre Vtable

Le tableau suivant présente les méthodes de IDebugSymbolProvider.

Méthode Description
Initialize Obsolète. Ne pas utiliser.
Uninitialize Obsolète. Ne pas utiliser.
GetContainerField Obtient le champ qui contient l’adresse de débogage.
GetField Obsolète. Ne pas utiliser.
GetAddressesFromPosition Cartes une position de document dans un tableau d’adresses de débogage.
GetAddressesFromContext Cartes un contexte de document dans un tableau d’adresses de débogage.
GetContextFromAddress Cartes une adresse de débogage dans un contexte de document.
GetLanguage Obtient la langue utilisée pour compiler le code à l’adresse de débogage.
GetGlobalContainer Obsolète. Ne pas utiliser.
GetMethodFieldsByName Obtient le champ représentant un nom de méthode complet.
GetClassTypeByName Obtient le type de champ de classe représentant un nom de classe complet.
GetNamespacesUsedAtAddress Crée un énumérateur pour les espaces de noms associés à l’adresse de débogage.
GetTypeByName Cartes un nom de symbole à un type de symbole.
GetNextAddress Obtient l’adresse de débogage qui suit une adresse de débogage donnée dans une méthode.

Notes

Cette interface mappe les positions des documents en adresses de débogage et inversement.

Spécifications

En-tête : sh.h

Espace de noms : Microsoft.VisualStudio.Debugger.Interop

Assembly : Microsoft.VisualStudio.Debugger.Interop.dll

Exemple

Cet exemple montre comment instancier le fournisseur de symboles, en fonction de 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