IDebugSymbolProvider

Ten interfejs reprezentuje dostawcę symboli, który udostępnia symbole i typy, zwracając je jako pola.

Składnia

IDebugSymbolProvider : IUnknown

Uwagi dotyczące implementacji

Dostawca symboli musi zaimplementować ten interfejs, aby dostarczyć symbol i informacje o typie do ewaluatora wyrażeń.

Uwagi dotyczące wywoływania

Ten interfejs jest uzyskiwany przy użyciu funkcji modelu COM CoCreateInstance (dla dostawców symboli niezarządzanych) lub przez załadowanie odpowiedniego zestawu kodu zarządzanego i utworzenie wystąpienia dostawcy symboli na podstawie informacji znalezionych w tym zestawie. Aparat debugowania tworzy wystąpienie dostawcy symboli w celu współpracy z ewaluatorem wyrażeń. Zobacz Przykładowe podejście do tworzenia wystąpienia tego interfejsu.

Metody w tabeli Vtable Order

W poniższej tabeli przedstawiono metody .IDebugSymbolProvider

Metoda opis
Initialize Przestarzałe. Nie używaj.
Uninitialize Przestarzałe. Nie używaj.
GetContainerField Pobiera pole zawierające adres debugowania.
GetField Przestarzałe. Nie używaj.
GetAddressesFromPosition Mapy położenie dokumentu w tablicę adresów debugowania.
GetAddressesFromContext Mapy kontekstu dokumentu do tablicy adresów debugowania.
GetContextFromAddress Mapy adres debugowania w kontekście dokumentu.
GetLanguage Pobiera język używany do kompilowania kodu pod adresem debugowania.
GetGlobalContainer Przestarzałe. Nie używaj.
GetMethodFieldsByName Pobiera pole reprezentujące w pełni kwalifikowaną nazwę metody.
GetClassTypeByName Pobiera typ pola klasy reprezentujący w pełni kwalifikowaną nazwę klasy.
GetNamespacesUsedAtAddress Tworzy moduł wyliczający dla przestrzeni nazw skojarzonych z adresem debugowania.
GetTypeByName Mapy nazwę symbolu do typu symbolu.
GetNextAddress Pobiera adres debugowania, który jest zgodny z danym adresem debugowania w metodzie.

Uwagi

Ten interfejs mapuje pozycje dokumentów na adresy debugowania i odwrotnie.

Wymagania

Nagłówek: sh.h

Przestrzeń nazw: Microsoft.VisualStudio.Debugger.Interop

Zestaw: Microsoft.VisualStudio.Debugger.Interop.dll

Przykład

W tym przykładzie pokazano, jak utworzyć wystąpienie dostawcy symboli, biorąc pod uwagę jego identyfikator GUID (aparat debugowania musi znać tę wartość).

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

Zobacz też