共用方式為


Direct2D 偵錯層概觀

Direct2D 偵錯層提供設計階段偵錯訊息,讓您將執行時間應用程式失敗降至最低。 本概觀描述 Direct2D 偵錯層的基本概念。 假設您已熟悉建立基本的 Direct2D 應用程式。

此概觀包含下列各節。

什麼是 Direct2D 偵錯層

在名為 d2d1debug.dll 的 Direct2D DLL 中,與 Direct2D 分開實作的 Direct2D 偵錯層提供偵錯訊息,讓您能夠精確地使用 Direct2D 函式。 偵錯訊息通常是 API 合約違規所造成的,例如 (不正確參數可能是 Direct3D 相關) 、不正確資源、執行緒違規,以及效能問題,例如當剪輯足夠時使用圖層。 若要指定偵錯層追蹤多少資訊,您可以指定三個偵錯層級的其中一個:資訊、警告和錯誤;層級錯誤的訊息會觸發中斷點來協助您進行偵錯。

安裝 Direct2D 偵錯層

如需安裝偵錯層的指示,請參閱 安裝 Direct2D 偵錯層

啟用偵錯層

若要在應用程式中啟用偵錯層,請使用D2D1CreateFactory函式建立處理站時,指定D2D1_DEBUG_LEVEL_NONE以外的D2D1_DEBUG_LEVEL值。

注意

如果已啟用 Direct2D 偵錯層,則 Direct2D 色彩管理效果 (CLSID_D2D1ColorManagement) 可能會在設定色彩內容時造成存取違規。 因應措施是在使用色彩管理效果時停用偵錯層

 

啟用處理站的偵錯層也會啟用該處理站所建立之任何物件的偵錯資訊。

下列範例會在針對 DEBUG 組建組態編譯應用程式時,啟用 Factory 的偵錯層。

        // 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 (錯誤) 、D2D1_DEBUG_LEVEL_WARNING (警告) ,以及D2D1_DEBUG_LEVEL_INFORMATION (資訊) 。 這些層級會解譯如下:

  • 錯誤: Direct2D 會將嚴重錯誤訊息傳送至偵錯層。 例如,中斷線程條件約束會產生嚴重錯誤。

  • 警告: Direct2D 會將錯誤訊息和警告傳送至偵錯層,以便解決這些訊息。

  • 資訊: Direct2D 會將錯誤訊息、警告和其他診斷資訊傳送至偵錯層。 例如,效能改進訊息將會在此偵錯層級傳送。

值D2D1_DEBUG_LEVEL_NONE (無) 表示 Direct2D 未提供任何偵錯輸出。

偵錯訊息