Panoramica del livello di debug Direct2D

Il livello di debug Direct2D fornisce messaggi di debug in fase di progettazione per ridurre al minimo l'errore dell'applicazione di runtime. Questa panoramica descrive le nozioni di base del livello di debug Direct2D. Si presuppone che si abbia familiarità con la creazione di applicazioni Direct2D di base.

Questa panoramica contiene le sezioni seguenti.

Che cos'è il livello di debug Direct2D

Il livello di debug Direct2D, implementato separatamente da Direct2D nella propria DLL denominata d2d1debug.dll, fornisce messaggi di debug per consentire l'uso accurato delle funzioni Direct2D. I messaggi di debug spesso derivano da violazioni del contratto API, ad esempio parametri non validi (potrebbero essere correlati a Direct3D), risorse non valide, violazioni del threading e problemi di prestazioni come l'uso di un livello quando un clip sarebbe sufficiente. Per specificare la quantità di informazioni tracciata dal livello di debug, è possibile specificare uno dei tre livelli di debug: informazioni, avvisi ed errori; e un messaggio di errore a livello attiva il punto di interruzione per consentire il debug.

Installazione del livello di debug Direct2D

Per istruzioni sull'installazione del livello di debug, vedere Installazione del livello di debug Direct2D.

Abilitazione del livello di debug

Per abilitare il livello di debug nell'applicazione, specificare un valore D2D1_DEBUG_LEVEL diverso daD2D1_DEBUG_LEVEL_NONE quando si crea una factory con la funzione D2D1CreateFactory.

Nota

Se il livello di debug Direct2D è abilitato, l'effetto di gestione dei colori Direct2D (CLSID_D2D1ColorManagement) può causare una violazione di accesso quando si imposta un contesto di colore. La soluzione alternativa consiste nel disabilitare il livello di debug quando si usa l'effetto di gestione dei colori

 

L'abilitazione del livello di debug per una factory consente anche il debug delle informazioni per qualsiasi oggetto creato da tale factory.

Nell'esempio seguente viene abilitato il livello di debug per una factory quando l'applicazione viene compilata per la configurazione di compilazione 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

Se non vengono specificate opzioni di factory o viene specificato un livello di debug "none", il livello di debug non viene richiamato. Il livello di debug non deve mai essere attivo nella versione di versione di un'applicazione.

 

La sezione successiva descrive i diversi livelli di debug definiti dall'enumerazione D2D1_DEBUG_LEVEL .

Livelli di debug

L'enumerazione D2D1_DEBUG_LEVEL specifica tre livelli di debug: D2D1_DEBUG_LEVEL_ERROR (errore), D2D1_DEBUG_LEVEL_WARNING (avviso) e D2D1_DEBUG_LEVEL_INFORMATION (informazioni). Questi livelli vengono interpretati come segue:

  • Errore: Direct2D invia messaggi di errore gravi al livello di debug. Ad esempio, l'interruzione di un vincolo di threading genererà un errore grave.

  • Avviso: Direct2D invia messaggi di errore e avvisi al livello di debug in modo che sia possibile risolvere uno di questi messaggi.

  • Informazioni: Direct2D invia messaggi di errore, avvisi e informazioni di diagnostica aggiuntive al livello di debug. Ad esempio, i messaggi di miglioramento delle prestazioni verranno inviati a questo livello di debug.

Il valore D2D1_DEBUG_LEVEL_NONE (nessuno) indica che Direct2D non fornisce alcun output di debug.

Messaggi di debug