Bagikan melalui


Cara Mengaktifkan Debugging Driver UMDF

Anda dapat menggunakan konfigurasi berikut untuk men-debug driver User-Mode Driver Framework (UMDF) selama pengembangan. Semua konfigurasi melibatkan dua komputer, host, dan target.

  • Salin driver secara manual ke target. Lakukan penelusuran kesalahan mode pengguna pada target. Dalam skenario ini, Anda melampirkan secara manual ke instans proses host driver yang berjalan pada target.
  • Salin driver secara manual ke target lalu lakukan penelusuran kesalahan mode kernel dari host.

Sebaiknya lakukan semua pengujian dan pengembangan driver UMDF dengan debugger kernel yang terpasang.

Praktik Terbaik

Sebaiknya lakukan semua pengujian driver UMDF dengan debugger kernel yang terpasang.

Berikut ini adalah pengaturan yang direkomendasikan. Anda dapat mengaturnya secara manual, atau menggunakan alat WDF Verifier Control Application (WDFVerifier.exe) di WDK untuk melihat atau mengubah pengaturan ini.

  • Aktifkan Pemverifikasi Aplikasi di WUDFHost.exe:

    AppVerif –enable Heaps Exceptions Handles Locks Memory TLS Leak –for WudfHost.exe
    

    Jika pengecualian terjadi, Pemverifikasi Aplikasi mengirimkan pesan diagnostik ke debugger dan menerobos masuk.

  • Jika Anda menggunakan sesi debugging mode kernel, atur HostFailKdDebugBreak sehingga reflektor masuk ke debugger mode kernel sebelum mengakhiri proses host driver. Pengaturan ini diaktifkan secara default mulai dari Windows 8.

  • Nonaktifkan pengumpulan dengan mengatur UmdfHostProcessSharing ke ProcessSharingDisabled. Untuk informasi, lihat Menentukan Arahan WDF dalam File INF.

  • Secara default, ketika perangkat UMDF gagal, kerangka kerja mencoba memulai ulang hingga lima kali. Anda dapat menonaktifkan mulai ulang otomatis dengan mengatur DebugModeFlags ke 0x01. Untuk informasi selengkapnya, lihat Nilai Registri untuk Penelusuran Kesalahan Driver WDF.

  • Reboot komputer Anda.

  • Untuk penelusuran kesalahan masalah driver UMDF, tinjau Menentukan Mengapa Reflektor Menghentikan Proses Host dan Men-debug driver UMDF crash

Menggunakan WinDbg untuk melampirkan secara manual (penelusuran kesalahan mode pengguna)

Pada komputer target, Anda dapat melampirkan WinDbg secara manual ke instans WUDFHost yang menghosting driver. Saat melampirkan, Anda masuk ke debugger dan Anda dapat mengatur titik henti di driver Anda.

Karena inisialisasi driver terjadi tak lama setelah WUDFHost dimuat, tidak layak untuk melampirkan secara manual pada waktunya untuk men-debug kode inisialisasi. Sebagai gantinya, Anda dapat mengatur nilai registri untuk menyebabkan proses host menunggu beberapa detik pada inisialisasi host atau waktu muat driver. Penundaan ini memberi Anda waktu untuk melampirkan WinDbg ke instans yang benar dari proses WUDFHost.

Ikuti langkah-langkah berikut:

  1. Di registri pada komputer target, atur HostProcessDbgBreakOnStart atau HostProcessDbgBreakOnDriverLoad ke beberapa detik dan reboot.
  2. Pada komputer target, buka WinDbg sebagai Administrator.
  3. Pada menu File , pilih Lampirkan ke Proses. Pilih Menurut Executable, dan temukan semua proses yang diberi nama WUDFHost.exe (mungkin tidak ada). Jika ada proses bernama WUDFHost.exe, tuliskan pengidentifikasi proses mereka untuk referensi di masa mendatang.
  4. Di Manajer Perangkat, aktifkan driver.
  5. Ulangi langkah 2 dan temukan instans baru WUDFHost.exe. Jika Anda tidak melihat instans baru WUDFHost.exe, klik Batal, dan pilih Lampirkan ke Proses lagi. Saat Anda menemukan instans baru WUDFHost.exe, pilih instans tersebut, dan klik OK.

Jika pengumpulan perangkat sedang digunakan dan Anda mengatur nilai registri HostProcessDbgBreakOnDriverLoad , Anda mungkin melihat pemutusan debugger karena pemuatan driver lain. Anda dapat menonaktifkan pengumpulan perangkat dengan menggunakan mode debug UMDF.

Untuk menggunakan mode debug, gunakan opsi F5 di Visual Studio, atau atur nilai DebugModeFlags dan DebugModeBinaries di registri.

Untuk informasi mendetail tentang nilai registri UMDF, lihat Nilai Registri untuk Penelusuran Kesalahan Driver WDF (KMDF dan UMDF).

Menggunakan WinDbg untuk men-debug dari jarak jauh dari komputer host (debugging mode kernel)

Dari host jarak jauh, buat sesi debugging mode kernel dan kemudian atur proses saat ini ke instans Wudfhost yang menghosting driver Anda. Jika Anda men-debug dari debugger kernel jarak jauh, Anda dapat mengatur HostProcessDbgBreakOnDriverStart atau HostProcessDbgBreakOnDriverLoad ke 0x80000000 untuk menentukan tidak ada batas waktu, tetapi masuk ke debugger kernel.

Gunakan langkah-langkah berikut:

  1. Nonaktifkan pengumpulan. aktifkan DebugModeFlags dan cantumkan driver Anda di DebugModeBinaries

  2. Jika driver Anda menggunakan UMDF 1.11 atau yang lebih baru, HostFailKdDebugBreak diaktifkan secara default. Lewati langkah ini.

    Jika driver Anda menggunakan UMDF 1.9 atau yang lebih lama, atur HostFailKdDebugBreak ke 1.

  3. Jika Anda menelusuri kesalahan masalah yang terkait dengan waktu habis, nonaktifkan HostProcessDbgBreakOnDriverStart dan HostProcessDbgBreakOnDriverLoad. (Ketika HostProcessDbgBreakOnDriverStart atau HostProcessDbgBreakOnDriverLoad bukan nol, kerangka kerja menonaktifkan batas waktu sehingga reflektor tidak menghentikan host saat debugger mode pengguna dilampirkan ke proses host.) Jika Anda perlu men-debug kode inisialisasi driver, alih-alih menggunakan dua nilai ini, coba keluarkan perintah berikut di WinDbg sebelum driver Anda dimuat: sxe ld:MyDriver.dll (berhenti pada beban modul)

  4. Reboot jika Anda membuat perubahan registri.

  5. Bergantung pada pilihan yang Anda buat di atas, debugger kernel jarak jauh Anda harus rusak ketika driver memuat atau membongkar target.