Direct2D 偵錯層概觀
Direct2D 偵錯層提供設計時間偵錯訊息,讓您將運行時間應用程式失敗降到最低。 本概觀描述 Direct2D 偵錯層的基本概念。 它假設您已熟悉建立基本的 Direct2D 應用程式。
本概觀包含下列各節。
什麼是 Direct2D 偵錯層
Direct2D 偵錯層是與 Direct2D 分開實作,並實作於名為 d2d1debug.dll的獨立 DLL 中,提供偵錯訊息,使您能夠準確地使用 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
注意
如果未指定 Factory 選項,或指定了 「none」 的偵錯層級,則不會叫用偵錯層。 偵錯層不應該在應用程式的發佈版本中啟用。
下一節描述 D2D1_DEBUG_LEVEL 列舉所定義的不同偵錯層級。
除錯層級
D2D1_DEBUG_LEVEL 列舉會指定三個偵錯層級:D2D1_DEBUG_LEVEL_ERROR(error)、D2D1_DEBUG_LEVEL_WARNING(warning)和D2D1_DEBUG_LEVEL_INFORMATION(information)。 這些層級會解譯如下:
錯誤: Direct2D 會將嚴重錯誤訊息傳送至偵錯層。 例如,打破執行緒限制會導致嚴重錯誤。
警告: Direct2D 會將錯誤訊息和警告傳送至偵錯層,以便解決這些訊息。
資訊: Direct2D 會將錯誤訊息、警告和其他診斷資訊傳送至偵錯層。 例如,效能改進訊息將會在此偵錯層級傳送。
值D2D1_DEBUG_LEVEL_NONE (none) 表示 Direct2D 未提供任何偵錯輸出。
相關主題