Compartir a través de


Introducción a la capa de depuración de Direct2D

La capa de depuración de Direct2D proporciona mensajes de depuración en tiempo de diseño para minimizar el error de la aplicación en tiempo de ejecución. En esta introducción se describen los conceptos básicos de la capa de depuración de Direct2D. Se supone que está familiarizado con la creación de aplicaciones básicas de Direct2D.

Esta introducción contiene las secciones siguientes.

¿Qué es la capa de depuración de Direct2D?

La capa de depuración de Direct2D, implementada por separado de Direct2D en su propia DLL denominada d2d1debug.dll, proporciona mensajes de depuración para permitirle usar con precisión las funciones de Direct2D. Los mensajes de depuración a menudo resultan de infracciones de contrato de API, como parámetros no válidos (podrían estar relacionados con Direct3D), recursos no válidos, infracciones de subprocesos y problemas de rendimiento, como el uso de una capa cuando un clip bastaría. Para especificar la cantidad de información que realiza el seguimiento de la capa de depuración, puede especificar uno de los tres niveles de depuración: información, advertencia y error; y un mensaje de error de nivel desencadena el punto de interrupción para ayudarle a depurar.

Instalación de la capa de depuración de Direct2D

Para obtener instrucciones sobre cómo instalar la capa de depuración, consulte Instalación de la capa de depuración de Direct2D.

Habilitación de la capa de depuración

Para habilitar la capa de depuración en la aplicación, especifique un valor de D2D1_DEBUG_LEVEL distinto de D2D1_DEBUG_LEVEL_NONE al crear un generador con la función D2D1CreateFactory .

Nota

Si la capa de depuración de Direct2D está habilitada, el efecto de administración de colores de Direct2D (CLSID_D2D1ColorManagement) puede provocar una infracción de acceso al establecer un contexto de color. La solución consiste en deshabilitar la capa de depuración al usar el efecto de administración de colores.

 

La habilitación de la capa de depuración para un generador también permite la información de depuración de cualquier objeto creado por esa factoría.

En el ejemplo siguiente se habilita la capa de depuración de un generador cuando la aplicación se compila para la configuración de compilación DEBUG.

        // If you set the options.debugLevel to D2D1_DEBUG_LEVEL_NONE,
        // the debug layer is not enabled.
#if defined(DEBUG) || defined(_DEBUG)
        D2D1_FACTORY_OPTIONS options;
        options.debugLevel = D2D1_DEBUG_LEVEL_INFORMATION;

        hr = D2D1CreateFactory(
            D2D1_FACTORY_TYPE_SINGLE_THREADED,
            options,
            &m_pD2DFactory
            );
#else
        hr = D2D1CreateFactory(
            D2D1_FACTORY_TYPE_SINGLE_THREADED,
            &m_pD2DFactory
            );
#endif

Nota

Si no se especifica ninguna opción de fábrica o se especifica un nivel de depuración de "none", no se invoca la capa de depuración. La capa de depuración nunca debe estar activa en la versión de lanzamiento de una aplicación.

 

En la sección siguiente se describen los distintos niveles de depuración definidos por la enumeración D2D1_DEBUG_LEVEL .

Niveles de depuración

La enumeración D2D1_DEBUG_LEVEL especifica tres niveles de depuración: D2D1_DEBUG_LEVEL_ERROR (error), D2D1_DEBUG_LEVEL_WARNING (advertencia) y D2D1_DEBUG_LEVEL_INFORMATION (información). Estos niveles se interpretan de la siguiente manera:

  • Error: Direct2D envía mensajes de error graves a la capa de depuración. Por ejemplo, la interrupción de una restricción de subprocesos generará un error grave.

  • Advertencia: Direct2D envía mensajes de error y advertencias a la capa de depuración para que pueda solucionar cualquiera de estos mensajes.

  • Información: Direct2D envía mensajes de error, advertencias e información de diagnóstico adicional a la capa de depuración. Por ejemplo, los mensajes de mejora del rendimiento se enviarán en este nivel de depuración.

El valor D2D1_DEBUG_LEVEL_NONE (none) indica que Direct2D no proporciona ninguna salida de depuración.

Depurar mensajes