Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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);
}