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