Condividi tramite


IDebugSymbolProvider

Questa interfaccia rappresenta un provider di simboli che fornisce simboli e tipi, restituendoli come campi.

Sintassi

IDebugSymbolProvider : IUnknown

Note per gli implementatori

Un provider di simboli deve implementare questa interfaccia per fornire informazioni sul simbolo e sul tipo a un analizzatore di espressioni.

Note per i chiamanti

Questa interfaccia viene ottenuta usando la CoCreateInstance funzione COM (per i provider di simboli non gestiti) o caricando l'assembly di codice gestito appropriato e creando un'istanza del provider di simboli in base alle informazioni trovate in tale assembly. Il motore di debug crea un'istanza del provider di simboli per lavorare in coordinamento con l'analizzatore di espressioni. Vedere l'esempio per un approccio alla creazione di un'istanza di questa interfaccia.

Metodi nell'ordine Vtable

Nella tabella seguente vengono illustrati i metodi di IDebugSymbolProvider.

metodo Descrizione
Initialize Deprecato. Non utilizzare.
Uninitialize Deprecato. Non utilizzare.
GetContainerField Ottiene il campo contenente l'indirizzo di debug.
GetField Deprecato. Non utilizzare.
GetAddressesFromPosition Mappe una posizione del documento in una matrice di indirizzi di debug.
GetAddressesFromContext Mappe un contesto di documento in una matrice di indirizzi di debug.
GetContextFromAddress Mappe un indirizzo di debug in un contesto di documento.
GetLanguage Ottiene il linguaggio utilizzato per compilare il codice nell'indirizzo di debug.
GetGlobalContainer Deprecato. Non utilizzare.
GetMethodFieldsByName Ottiene il campo che rappresenta un nome di metodo completo.
GetClassTypeByName Ottiene il tipo di campo della classe che rappresenta un nome di classe completo.
GetNamespacesUsedAtAddress Crea un enumeratore per gli spazi dei nomi associati all'indirizzo di debug.
GetTypeByName Mappe un nome di simbolo a un tipo di simbolo.
GetNextAddress Ottiene l'indirizzo di debug che segue un determinato indirizzo di debug in un metodo.

Osservazioni:

Questa interfaccia esegue il mapping delle posizioni dei documenti in 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 di simboli, dato il RELATIVO GUID (un motore di debug deve 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);
}

Vedi anche