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

Consulte también