IDebugSymbolProvider
Esta interfaz representa un proveedor de símbolos que proporciona símbolos y tipos, devolviéndolos como campos.
Sintaxis
IDebugSymbolProvider : IUnknown
Notas para los implementadores
Un proveedor de símbolos debe implementar esta interfaz para proporcionar información de tipos y símbolos a un evaluador de expresiones.
Notas para autores de la llamada
Esta interfaz se obtiene mediante la función com CoCreateInstance
(para proveedores de símbolos no administrados) o cargando el ensamblado de código administrado adecuado y creando instancias del proveedor de símbolos en función de la información encontrada en ese ensamblado. El motor de depuración crea una instancia del proveedor de símbolos para que funcione en coordinación con el evaluador de expresiones. Consulte el ejemplo de un enfoque para crear instancias de esta interfaz.
Métodos en orden de Vtable
En la tabla siguiente se muestran los métodos de IDebugSymbolProvider
.
Método | Descripción |
---|---|
Initialize |
En desuso. No utilizar. |
Uninitialize |
En desuso. No utilizar. |
GetContainerField | Obtiene el campo que contiene la dirección de depuración. |
GetField |
En desuso. No utilizar. |
GetAddressesFromPosition | Mapas una posición de documento en una matriz de direcciones de depuración. |
GetAddressesFromContext | Mapas un contexto de documento en una matriz de direcciones de depuración. |
GetContextFromAddress | Mapas una dirección de depuración en un contexto de documento. |
GetLanguage | Obtiene el lenguaje usado para compilar el código en la dirección de depuración. |
GetGlobalContainer |
En desuso. No utilizar. |
GetMethodFieldsByName | Obtiene el campo que representa un nombre de método completo. |
GetClassTypeByName | Obtiene el tipo de campo de clase que representa un nombre de clase completo. |
GetNamespacesUsedAtAddress | Crea un enumerador para los espacios de nombres asociados a la dirección de depuración. |
GetTypeByName | Mapas un nombre de símbolo a un tipo de símbolo. |
GetNextAddress | Obtiene la dirección de depuración que sigue a una dirección de depuración determinada en un método . |
Comentarios
Esta interfaz asigna posiciones de documento a direcciones de depuración y viceversa.
Requisitos
Encabezado: sh.h
Espacio de nombres: Microsoft.VisualStudio.Debugger.Interop
Ensamblado: Microsoft.VisualStudio.Debugger.Interop.dll
Ejemplo
En este ejemplo se muestra cómo crear una instancia del proveedor de símbolos, dado su GUID (un motor de depuración debe conocer este valor).
// 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);
}