Freigeben über


IDebugSymbolProvider

Diese Schnittstelle stellt einen Symbolanbieter dar, der Symbole und Typen bereitstellt und als Felder zurückgibt.

Syntax

IDebugSymbolProvider : IUnknown

Hinweise für Implementierer

Ein Symbolanbieter muss diese Schnittstelle implementieren, um Symbol- und Typinformationen an einen Ausdrucksauswerter anzugeben.

Hinweise für Aufrufer

Diese Schnittstelle wird mithilfe der CoCreateInstance COM-Funktion (für nicht verwaltete Symbolanbieter) oder durch Laden der entsprechenden Assembly mit verwaltetem Code abgerufen und der Symbolanbieter basierend auf den informationen in dieser Assembly instanziiert. Das Debugmodul instanziiert den Symbolanbieter, um in Abstimmung mit dem Ausdrucksauswerter zu arbeiten. Sehen Sie sich das Beispiel für einen Ansatz zum Instanziieren dieser Schnittstelle an.

Methoden in Vtable-Reihenfolge

In der folgenden Tabelle sind die Methoden von IDebugSymbolProvider aufgeführt.

Methode Beschreibung
Initialize Veraltet. Nicht verwenden.
Uninitialize Veraltet. Nicht verwenden.
GetContainerField Ruft das Feld ab, das die Debugadresse enthält.
GetField Veraltet. Nicht verwenden.
GetAddressesFromPosition Karten einer Dokumentposition in einem Array von Debugadressen.
GetAddressesFromContext Karten einen Dokumentkontext in ein Array von Debugadressen ein.
GetContextFromAddress Karten eine Debugadresse in einen Dokumentkontext ein.
GetLanguage Ruft die Sprache ab, die zum Kompilieren des Codes an der Debugadresse verwendet wird.
GetGlobalContainer Veraltet. Nicht verwenden.
GetMethodFieldsByName Ruft das Feld ab, das einen vollqualifizierten Methodennamen darstellt.
GetClassTypeByName Ruft den Klassenfeldtyp ab, der einen vollqualifizierten Klassennamen darstellt.
GetNamespacesUsedAtAddress Erstellt einen Enumerator für Namespaces, die der Debugadresse zugeordnet sind.
GetTypeByName Karten einen Symbolnamen in einen Symboltyp ein.
GetNextAddress Ruft die Debugadresse ab, die einer bestimmten Debugadresse in einer Methode folgt.

Hinweise

Diese Schnittstelle ordnet Dokumentpositionen debugadressen zu und umgekehrt.

Anforderungen

Kopfzeile: sh.h

Namespace: Microsoft.VisualStudio.Debugger.Interop

Assembly: Microsoft.VisualStudio.Debugger.Interop.dll

Beispiel

In diesem Beispiel wird gezeigt, wie der Symbolanbieter anhand seiner GUID instanziiert wird (ein Debugmodul muss diesen Wert kennen).

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

Siehe auch