IDebugSymbolProvider
Cette interface représente un fournisseur de symboles qui fournit des symboles et des types, les renvoyant en tant que champs.
Syntaxe
IDebugSymbolProvider : IUnknown
Remarques pour les implémenteurs
Un fournisseur de symboles doit implémenter cette interface pour fournir des symboles et des informations de type à un évaluateur d’expression.
Remarques pour les appelants
Cette interface est obtenue à l’aide de la CoCreateInstance
fonction COM (pour les fournisseurs de symboles non managés) ou en chargeant l’assembly de code managé approprié et en instanciant le fournisseur de symboles en fonction des informations trouvées dans cet assembly. Le moteur de débogage instancie le fournisseur de symboles à travailler en coordination avec l’évaluateur d’expression. Consultez l’exemple d’une approche permettant d’instancier cette interface.
Méthodes dans l'ordre Vtable
Le tableau suivant présente les méthodes de IDebugSymbolProvider
.
Méthode | Description |
---|---|
Initialize |
Obsolète. Ne pas utiliser. |
Uninitialize |
Obsolète. Ne pas utiliser. |
GetContainerField | Obtient le champ qui contient l’adresse de débogage. |
GetField |
Obsolète. Ne pas utiliser. |
GetAddressesFromPosition | Cartes une position de document dans un tableau d’adresses de débogage. |
GetAddressesFromContext | Cartes un contexte de document dans un tableau d’adresses de débogage. |
GetContextFromAddress | Cartes une adresse de débogage dans un contexte de document. |
GetLanguage | Obtient la langue utilisée pour compiler le code à l’adresse de débogage. |
GetGlobalContainer |
Obsolète. Ne pas utiliser. |
GetMethodFieldsByName | Obtient le champ représentant un nom de méthode complet. |
GetClassTypeByName | Obtient le type de champ de classe représentant un nom de classe complet. |
GetNamespacesUsedAtAddress | Crée un énumérateur pour les espaces de noms associés à l’adresse de débogage. |
GetTypeByName | Cartes un nom de symbole à un type de symbole. |
GetNextAddress | Obtient l’adresse de débogage qui suit une adresse de débogage donnée dans une méthode. |
Notes
Cette interface mappe les positions des documents en adresses de débogage et inversement.
Spécifications
En-tête : sh.h
Espace de noms : Microsoft.VisualStudio.Debugger.Interop
Assembly : Microsoft.VisualStudio.Debugger.Interop.dll
Exemple
Cet exemple montre comment instancier le fournisseur de symboles, en fonction de son GUID (un moteur de débogage doit connaître cette valeur).
// 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);
}