Direct2D 调试层概述

Direct2D 调试层提供设计时调试消息,以便最大程度地减少运行时应用程序故障。 本概述介绍 Direct2D 调试层的基础知识。 它假定你熟悉如何创建基本的 Direct2D 应用程序。

此概述包含以下部分。

什么是 Direct2D 调试层

Direct2D 调试层在名为 d2d1debug.dll 的自己的 DLL 中独立于 Direct2D 实现,提供调试消息,使你能够准确地使用 Direct2D 函数。 调试消息通常会导致 API 协定冲突(如 (无效参数)与 Direct3D 相关的) 、无效资源、线程冲突和性能问题,例如,当剪辑足够时使用层。 若要指定调试层跟踪的信息量,可以指定三个调试级别之一:信息、警告和错误;级别错误的消息会触发断点来帮助调试。

安装 Direct2D 调试层

有关安装调试层的说明,请参阅 安装 Direct2D 调试层

启用调试层

若要在应用程序中启用调试层,请在使用 D2D1CreateFactory 函数创建工厂时指定除D2D1_DEBUG_LEVEL_NONE以外的D2D1_DEBUG_LEVEL值。

注意

如果已启用 Direct2D 调试层,则 Direct2D 颜色管理效果 (CLSID_D2D1ColorManagement) 在设置颜色上下文时可能会导致访问冲突。 解决方法是使用颜色管理效果时禁用调试层

 

为工厂启用调试层还会为该工厂创建的任何对象启用调试信息。

以下示例为调试生成配置编译应用程序时,为工厂启用调试层。

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

注意

如果未指定任何工厂选项或指定“无”的调试级别,则不会调用调试层。 调试层不应在应用程序的发布版本中处于活动状态。

 

下一部分介绍 由D2D1_DEBUG_LEVEL 枚举定义的不同调试级别。

调试级别

D2D1_DEBUG_LEVEL枚举指定三个调试级别:D2D1_DEBUG_LEVEL_ERROR (错误) 、D2D1_DEBUG_LEVEL_WARNING (警告) 和D2D1_DEBUG_LEVEL_INFORMATION (信息) 。 这些级别解释如下:

  • 错误: Direct2D 将严重错误消息发送到调试层。 例如,中断线程约束将生成严重错误。

  • 警告: Direct2D 将错误消息和警告发送到调试层,以便你可以解决其中任何消息。

  • 信息: Direct2D 将错误消息、警告和其他诊断信息发送到调试层。 例如,性能改进消息将在此调试级别发送。

值D2D1_DEBUG_LEVEL_NONE (无) 指示 Direct2D 不提供任何调试输出。

调试消息