共用方式為


IDebugSymbolProvider

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

這個介面表示提供符號和型別,將其傳回做為欄位的符號提供者。

語法

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

另請參閱

符號提供者介面