IDebugSymbolProvider
這個介面表示符號提供者所提供的符號和型別,將它們傳回的欄位。
IDebugSymbolProvider : IUnknown
實作器注意事項
符號提供者必須實作這個介面來提供符號,而輸入的運算式評估工具的資訊。
呼叫者的備忘稿
這個介面藉由使用 COM 的CoCreateInstance的功能 (不受管理的符號提供者),或藉由載入適當的 managed 程式碼組件並具現化該組件中找到的資訊為基礎的符號提供者。 偵錯引擎會具現化的運算式評估工具搭配使用的符號提供者。 請參閱具現化這個介面的其中一個方法的範例。
方法 Vtable 順序
下表顯示的方法IDebugSymbolProvider。
方法 |
描述 |
---|---|
Initialize |
已取代。 不要使用。 |
Uninitialize |
已取代。 不要使用。 |
取得包含偵錯的地址的欄位。 |
|
GetField |
已取代。 不要使用。 |
對應到陣列的文件位置的偵錯的位址。 |
|
將文件內容對應至偵錯位址的陣列。 |
|
將偵錯位址對應到文件內容。 |
|
取得用來編譯偵錯的地址的程式碼的語言。 |
|
GetGlobalContainer |
已取代。 不要使用。 |
取得表示完整的方法名稱的欄位。 |
|
取得表示完整的類別名稱的類別欄位型別。 |
|
會建立偵錯的地址相關聯的命名空間的列舉值。 |
|
符號名稱對應的符號型別。 |
|
取得偵錯位址後面指定偵錯中的地址的方法。 |
備註
這個介面會對應到偵錯的地址,或進行相反動作的文件位置。
需求
標頭: sh.h
Namespace: 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);
}