IDebugSymbolProvider
Этот интерфейс представляет поставщик символов, который предоставляет символы и типы, возвращая их в виде полей.
Синтаксис
IDebugSymbolProvider : IUnknown
Примечания для разработчиков
Поставщик символов должен реализовать этот интерфейс для предоставления сведений о символах и типах вычислителю выражений.
Заметки для вызывающих абонентов
Этот интерфейс получается с помощью функции COM CoCreateInstance
(для неуправляемых поставщиков символов) или путем загрузки соответствующей сборки управляемого кода и создания экземпляра поставщика символов на основе сведений, найденных в этой сборке. Модуль отладки создает экземпляр поставщика символов для работы в координации с вычислителем выражений. Пример для создания экземпляра этого интерфейса см. в примере.
Методы в порядке таблицы Vtable
В следующей таблице показаны методы IDebugSymbolProvider
.
Метод | Description |
---|---|
Initialize |
Устарело. Не используйте. |
Uninitialize |
Устарело. Не используйте. |
GetContainerField | Возвращает поле, содержащее адрес отладки. |
GetField |
Устарело. Не используйте. |
GetAddressesFromPosition | Карты положение документа в массив отладочных адресов. |
GetAddressesFromContext | Карты контекст документа в массив отладочных адресов. |
GetContextFromAddress | Карты адрес отладки в контекст документа. |
GetLanguage | Возвращает язык, используемый для компиляции кода по адресу отладки. |
GetGlobalContainer |
Устарело. Не используйте. |
GetMethodFieldsByName | Возвращает поле, представляющее полное имя метода. |
GetClassTypeByName | Возвращает тип поля класса, представляющий полное имя класса. |
GetNamespacesUsedAtAddress | Создает перечислитель для пространств имен, связанных с адресом отладки. |
GetTypeByName | Карты имя символа в тип символа. |
GetNextAddress | Возвращает адрес отладки, следующий за заданным адресом отладки в методе. |
Замечания
Этот интерфейс сопоставляет позиции документов с адресами отладки и наоборот.
Requirements
Заголовок: sh.h
Пространство имен: Microsoft.VisualStudio.Debugger.Interop
Сборка: Microsoft.VisualStudio.Debugger.Interop.dll
Пример
В этом примере показано, как создать экземпляр поставщика символов, учитывая его GUID (подсистема отладки должна знать это значение).
// 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);
}