共用方式為


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 未提供任何偵錯輸出。

偵錯訊息