Condividi tramite


IDebugSymbolProvider

Questa interfaccia rappresenta un provider di simboli che fornisce i simboli e i tipi, restituendo li come campi.

IDebugSymbolProvider : IUnknown

Note per gli implementatori

Un provider di simbolo deve implementare questa interfaccia per definire il simbolo e le informazioni sul tipo a un analizzatore di espressioni.

Note per i chiamanti

Questa interfaccia viene ottenuta mediante la funzione di CoCreateInstance di COM (per i provider non gestiti di simboli) o quando si caricano l'assembly corretto di codice gestito e viene creata un'istanza del provider del simbolo in base alle informazioni presenti in tale assembly. Il motore di debug creare un'istanza del provider dei simboli per l'utilizzo di coordinamento con l'analizzatore di espressioni. Vedere l'esempio relativo a un approccio a creare un'istanza dell'interfaccia.

Metodi nell'ordine di Vtable

Nella tabella seguente sono elencati i metodi di IDebugSymbolProvider.

Metodo

Descrizione

Initialize

Deprecata. Non utilizzare.

Uninitialize

Deprecata. Non utilizzare.

IDebugSymbolProvider:: GetContainerField

Ottiene il campo contenente l'indirizzo di debug.

GetField

Deprecata. Non utilizzare.

IDebugSymbolProvider:: GetAddressesFromPosition

Esegue il mapping di una posizione di documento in una matrice degli indirizzi di debug.

IDebugSymbolProvider:: GetAddressesFromContext

Esegue il mapping di un contesto di documento in una matrice degli indirizzi di debug.

IDebugSymbolProvider:: GetContextFromAddress

Esegue il mapping di un indirizzo di debug in un contesto del documento.

IDebugSymbolProvider:: GetLanguage

Ottiene il linguaggio utilizzato per compilare il codice all'indirizzo di debug.

GetGlobalContainer

Deprecata. Non utilizzare.

IDebugSymbolProvider:: GetMethodFieldsByName

Ottiene il campo che rappresenta il nome di un metodo completo.

IDebugSymbolProvider:: GetClassTypeByName

Ottiene il tipo di campo della classe che rappresenta un nome di classe completo.

IDebugSymbolProvider:: GetNamespacesUsedAtAddress

Crea un enumeratore per gli spazi dei nomi associati all'indirizzo di debug.

IDebugSymbolProvider:: GetTypeByName

Esegue il mapping di un nome di simbolo a un tipo di simboli.

IDebugSymbolProvider:: GetNextAddress

ottiene l'indirizzo di debug che segue un indirizzo specificato di debug in un metodo.

Note

Questa interfaccia esegue il mapping tra le posizioni del documento negli indirizzi di debug e viceversa.

Requisiti

intestazione: sh.h

Spazio dei nomi: Microsoft.VisualStudio.Debugger.Interop

Assembly: Microsoft.VisualStudio.Debugger.Interop.dll

Esempio

In questo esempio viene illustrato come creare un'istanza del provider dei simboli, specificando il GUID (un motore di debug necessario conoscere questo valore).

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

Vedere anche

Concetti

Interfacce di provider dei simboli