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