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