Freigeben über


Übersicht über die Direct2D-Debugebene

Die Direct2D-Debugebene stellt Debugmeldungen zur Entwurfszeit bereit, um Laufzeitanwendungsfehler zu minimieren. In dieser Übersicht werden die Grundlagen der Direct2D-Debugebene beschrieben. Es wird davon ausgegangen, dass Sie mit dem Erstellen grundlegender Direct2D-Anwendungen vertraut sind.

Diese Übersicht enthält die folgenden Abschnitte.

Was ist die Direct2D-Debugebene?

Die Direct2D-Debugebene, die separat von Direct2D in einer eigenen DLL namens d2d1debug.dll implementiert wird, stellt Debugmeldungen bereit, damit Sie Direct2D-Funktionen genau verwenden können. Die Debugmeldungen resultieren häufig aus Verstößen gegen DEN API-Vertrag, z. B. ungültige Parameter (die sich auf Direct3D beziehen), ungültige Ressourcen, Threadingverletzungen und Leistungsprobleme wie die Verwendung einer Ebene, wenn ein Clip ausreichend wäre. Um anzugeben, wie viele Informationen von der Debugebene nachverfolgt werden, können Sie eine der drei Debugebenen angeben: Informationen, Warnung und Fehler; und eine Meldung des Ebenenfehlers löst den Haltepunkt aus, um Sie beim Debuggen zu unterstützen.

Installieren der Direct2D-Debugebene

Anweisungen zum Installieren der Debugebene finden Sie unter Installieren der Direct2D-Debugebene.

Aktivieren der Debugebene

Um die Debugebene in Ihrer Anwendung zu aktivieren, geben Sie einen anderen D2D1_DEBUG_LEVEL Wert als D2D1_DEBUG_LEVEL_NONE an, wenn Sie eine Factory mit der Funktion D2D1CreateFactory erstellen.

Hinweis

Wenn die Direct2D-Debugebene aktiviert ist, kann der Direct2D-Farbverwaltungseffekt (CLSID_D2D1ColorManagement) beim Festlegen eines Farbkontexts zu einer Zugriffsverletzung führen. Die Problemumgehung besteht darin, die Debugebene bei Verwendung des Farbverwaltungseffekts zu deaktivieren.

 

Wenn Sie die Debugebene für eine Factory aktivieren, werden auch Debuginformationen für jedes objekt aktiviert, das von dieser Factory erstellt wurde.

Im folgenden Beispiel wird die Debugebene für eine Factory aktiviert, wenn die Anwendung für die DEBUG-Buildkonfiguration kompiliert wird.

        // 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

Hinweis

Wenn keine Factoryoptionen angegeben oder die Debugebene "none" angegeben ist, wird die Debugebene nicht aufgerufen. Die Debugebene sollte in der Releaseversion einer Anwendung nie aktiv sein.

 

Im nächsten Abschnitt werden die verschiedenen Debugebenen beschrieben, die durch die D2D1_DEBUG_LEVEL-Enumeration definiert werden.

Debugebenen

Die D2D1_DEBUG_LEVEL-Enumeration gibt drei Debugebenen an: D2D1_DEBUG_LEVEL_ERROR (Fehler), D2D1_DEBUG_LEVEL_WARNING (Warnung) und D2D1_DEBUG_LEVEL_INFORMATION (Informationen). Diese Ebenen werden wie folgt interpretiert:

  • Fehler: Direct2D sendet schwerwiegende Fehlermeldungen an die Debugebene. Wenn Sie beispielsweise eine Threadingeinschränkung unterbrechen, wird ein schwerwiegender Fehler generiert.

  • Warnung: Direct2D sendet Fehlermeldungen und Warnungen an die Debugebene, damit Sie jede dieser Nachrichten behandeln können.

  • Informationen: Direct2D sendet Fehlermeldungen, Warnungen und zusätzliche Diagnoseinformationen an die Debugebene. Beispielsweise werden Meldungen zur Leistungsverbesserung auf dieser Debugebene gesendet.

Der Wert D2D1_DEBUG_LEVEL_NONE (none) gibt an, dass Direct2D keine Debugausgabe bereitstellt.

Debugmeldungen