IDebugSymbolProvider
這個介面代表提供符號和型別的符號提供者,以字段的形式傳回它們。
語法
IDebugSymbolProvider : IUnknown
實作者的注意事項
符號提供者必須實作這個介面,才能將符號和類型資訊提供給表達式評估工具。
呼叫端注意事項
此介面是使用 COM 的 CoCreateInstance
函式取得(適用於 Unmanaged 符號提供者),或載入適當的 Managed 程式代碼元件,並根據該元件中找到的資訊具現化符號提供者。 偵錯引擎會具現化符號提供者,以與表達式評估工具協調。 如需具現化此介面的方法,請參閱範例。
依照 Vtable 順序的方法
下表顯示 IDebugSymbolProvider
方法。
方法 | 描述 |
---|---|
Initialize |
已取代。 請勿使用。 |
Uninitialize |
已取代。 請勿使用。 |
GetContainerField | 取得包含偵錯位址的欄位。 |
GetField |
已取代。 請勿使用。 |
GetAddressesFromPosition | 地圖 檔位置到偵錯位址陣列中。 |
GetAddressesFromContext | 地圖 檔內容到偵錯位址陣列。 |
GetContextFromAddress | 地圖 偵錯位址到文件內容。 |
GetLanguage | 取得用來在偵錯位址編譯程式代碼的語言。 |
GetGlobalContainer |
已取代。 請勿使用。 |
GetMethodFieldsByName | 取得代表完整方法名稱的欄位。 |
GetClassTypeByName | 取得代表完整類別名稱的類別欄位類型。 |
GetNamespacesUsedAtAddress | 為與偵錯地址相關聯的命名空間建立列舉值。 |
GetTypeByName | 地圖 符號類型符號名稱。 |
GetNextAddress | 取得方法中指定偵錯位址後面的偵錯位址。 |
備註
此介面會將檔位置對應至偵錯位址,反之亦然。
需求
標頭: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);
}