Bagikan melalui


Gambaran Umum Lapisan Debug Direct2D

Lapisan debug Direct2D menyediakan pesan debug waktu desain bagi Anda untuk meminimalkan kegagalan aplikasi 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, yang 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 yang tidak valid (dapat terkait Direct3D), sumber daya yang tidak valid, pelanggaran utas, dan masalah performa seperti menggunakan lapisan saat klip sudah cukup. Untuk menentukan berapa banyak informasi yang dilacak oleh lapisan debug, Anda dapat menentukan salah satu dari tiga tingkat debug: informasi, peringatan, dan kesalahan; dan pesan kesalahan tingkat 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 saat Anda membuat pabrik dengan fungsi D2D1CreateFactory .

Catatan

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 memungkinkan informasi penelusuran kesalahan 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

Catatan

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:

  • Kesalahan: 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 memberikan output penelusuran kesalahan apa pun.

Pesan Debug