IDebugSymbolProvider

Toto rozhraní představuje zprostředkovatele symbolů, který poskytuje symboly a typy a vrací je jako pole.

Syntaxe

IDebugSymbolProvider : IUnknown

Poznámky pro implementátory

Zprostředkovatel symbolů musí implementovat toto rozhraní, aby bylo možné zadat informace o symbolu a typu do vyhodnocovače výrazů.

Poznámky pro volající

Toto rozhraní se získá pomocí funkce modelu COM CoCreateInstance (pro nespravované zprostředkovatele symbolů) nebo načtením příslušného sestavení spravovaného kódu a vytvořením instance zprostředkovatele symbolů na základě informací nalezených v tomto sestavení. Ladicí modul vytvoří instanci zprostředkovatele symbolů, aby fungoval v koordinaci s vyhodnocovačem výrazů. Podívejte se na příklad pro jeden přístup k vytvoření instance tohoto rozhraní.

Metody v pořadí Vtable

Následující tabulka ukazuje metody IDebugSymbolProvider.

metoda Popis
Initialize Zastaralé Nepoužívat.
Uninitialize Zastaralé Nepoužívat.
GetContainerField Získá pole, které obsahuje ladicí adresu.
GetField Zastaralé Nepoužívat.
GetAddressesFromPosition Mapy pozici dokumentu do pole ladicích adres.
GetAddressesFromContext Mapy kontext dokumentu do pole ladicích adres.
GetContextFromAddress Mapy ladicí adresu do kontextu dokumentu.
GetLanguage Získá jazyk použitý ke kompilaci kódu na ladicí adrese.
GetGlobalContainer Zastaralé Nepoužívat.
GetMethodFieldsByName Získá pole představující plně kvalifikovaný název metody.
GetClassTypeByName Získá typ pole třídy představující plně kvalifikovaný název třídy.
GetNamespacesUsedAtAddress Vytvoří enumerátor pro obory názvů přidružené k adrese ladění.
GetTypeByName Mapy název symbolu k typu symbolu.
GetNextAddress Získá ladicí adresu, která následuje za danou adresou ladění v metodě.

Poznámky

Toto rozhraní mapuje pozice dokumentů na ladicí adresy a naopak.

Požadavky

Hlavička: sh.h

Obor názvů: Microsoft.VisualStudio.Debugger.Interop

Sestavení: Microsoft.VisualStudio.Debugger.Interop.dll

Příklad

Tento příklad ukazuje, jak vytvořit instanci zprostředkovatele symbolů vzhledem k jeho identifikátoru GUID (ladicí modul musí znát tuto hodnotu).

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

Viz také