Bagikan melalui


Gambaran Umum Lapisan Debug Direct2D

Lapisan debug Direct2D menyediakan pesan debug pada saat perancangan untuk membantu Anda meminimalkan kegagalan aplikasi saat runtime. Gambaran umum ini menjelaskan dasar-dasar lapisan debug Direct2D. Ini mengasumsikan bahwa Anda terbiasa membuat aplikasi Direct2D dasar.

Gambaran umum ini berisi bagian berikut.

Apa Itu Lapisan Debug Direct2D

Lapisan debug Direct2D, diimplementasikan secara terpisah dari Direct2D di DLL sendiri bernama d2d1debug.dll, menyediakan pesan debug untuk memungkinkan Anda menggunakan fungsi Direct2D secara akurat. Pesan debug sering diakibatkan oleh pelanggaran kontrak API seperti parameter tidak valid (mungkin terkait Direct3D), sumber daya tidak valid, pelanggaran utas, dan isu performa seperti menggunakan lapisan padahal klip sudah cukup. Untuk menentukan berapa banyak informasi yang dilacak oleh lapisan debug, Anda dapat memilih salah satu dari tiga tingkat debug: informasi, peringatan, dan kesalahan; dan pesan dengan tingkat kesalahan akan memicu titik henti untuk membantu Anda men-debug.

Menginstal Lapisan Debug Direct2D

Untuk petunjuk tentang menginstal lapisan debug, lihat Menginstal Lapisan Debug Direct2D.

Mengaktifkan Lapisan Debug

Untuk mengaktifkan lapisan debug di aplikasi Anda, tentukan nilai D2D1_DEBUG_LEVEL selain D2D1_DEBUG_LEVEL_NONE ketika membuat faktori dengan fungsi D2D1CreateFactory.

Nota

Jika lapisan debug Direct2D diaktifkan, efek manajemen warna Direct2D (CLSID_D2D1ColorManagement) dapat menyebabkan pelanggaran akses saat mengatur konteks warna. Solusinya adalah menonaktifkan lapisan debug saat menggunakan efek manajemen warna

 

Mengaktifkan lapisan debug untuk pabrik juga mengaktifkan informasi debug untuk objek apa pun yang dibuat oleh pabrik tersebut.

Contoh berikut memungkinkan lapisan debug untuk pabrik saat aplikasi dikompilasi untuk konfigurasi build 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

Nota

Jika tidak ada opsi pabrik yang ditentukan atau tingkat debug "tidak ada" yang ditentukan, lapisan debug tidak dipanggil. Lapisan debug tidak boleh aktif dalam versi rilis aplikasi.

 

Bagian berikutnya menjelaskan berbagai tingkat debug yang ditentukan oleh enumerasi D2D1_DEBUG_LEVEL.

Tingkat Debug

Enumerasi D2D1_DEBUG_LEVEL menentukan tiga tingkat debug: D2D1_DEBUG_LEVEL_ERROR (kesalahan), D2D1_DEBUG_LEVEL_WARNING (peringatan), dan D2D1_DEBUG_LEVEL_INFORMATION (informasi). Tingkat-tingkat ini ditafsirkan sebagai berikut:

  • Error: Direct2D mengirimkan pesan kesalahan parah ke lapisan debug. Misalnya, melanggar batasan utas akan menghasilkan kesalahan yang parah.

  • Peringatan: Direct2D mengirim pesan kesalahan dan peringatan ke lapisan debug sehingga Anda dapat mengatasi salah satu pesan ini.

  • informasi : Direct2D mengirim pesan kesalahan, peringatan, dan informasi diagnostik tambahan ke lapisan debug. Misalnya, pesan peningkatan performa akan dikirim pada tingkat debug ini.

Nilai D2D1_DEBUG_LEVEL_NONE (tidak ada) menunjukkan bahwa Direct2D tidak menyediakan output penelusuran kesalahan apa pun.

Pesan Debug