Общие сведения об уровне отладки Direct2D
Слой отладки Direct2D предоставляет сообщения отладки на этапе проектирования, для минимизации сбоев приложений на этапе выполнения. В этом обзоре описаны основы уровня отладки Direct2D. Предполагается, что вы знакомы с созданием базовых приложений Direct2D.
В этом обзоре содержатся следующие разделы.
- что такое уровень отладки Direct2D
- Установка уровня отладки Direct2D
- включение слоя отладки
- уровни отладки
- Связанные темы
Что такое уровень отладки Direct2D
Уровень отладки Direct2D, реализованный отдельно от Direct2D в собственной библиотеке DLL с именем d2d1debug.dll, предоставляет сообщения отладки для точного использования функций Direct2D. Сообщения отладки часто возникают из-за нарушений контракта API, таких как недопустимые параметры (например, связанные с Direct3D), недопустимые ресурсы, нарушения потоков, а также проблемы производительности, такие как использование слоя вместо клипа, который был бы достаточно. Чтобы указать, сколько сведений трассируется на уровне отладки, можно указать один из трех уровней отладки: сведения, предупреждения и ошибки; и сообщение об ошибке уровня активирует точку останова для отладки.
Установка уровня отладки Direct2D
Инструкции по установке слоя отладки см. в Installing the Direct2D Debug Layer.
Включение уровня отладки
Чтобы включить уровень отладки в приложении, укажите значение D2D1_DEBUG_LEVEL, отличное от D2D1_DEBUG_LEVEL_NONE при создании фабрики с функцией D2D1CreateFactory.
Заметка
Если включен уровень отладки 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
Заметка
Если параметры фабрики не заданы или задан уровень отладки "нет", то слой отладки не активируется. Уровень отладки никогда не должен быть активным в версии выпуска приложения.
В следующем разделе описаны различные уровни отладки, определенные перечислением 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 не предоставляет выходные данные отладки.
Связанные разделы