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) 可能会在设置颜色上下文时导致访问冲突。 解决方法是在使用颜色管理效果时禁用调试层
为工厂启用调试层还会启用该工厂创建的任何对象的调试信息。
以下示例在为 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
注意
如果未指定工厂选项或指定调试级别“none”,则不调用调试层。 调试层不应在应用程序的发布版本中处于活动状态。
下一部分介绍 由 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 (none) 指示 Direct2D 不提供任何调试输出。
相关主题