Penangan protokol penelusuran kesalahan

Memahami bagaimana handler protokol diluncurkan adalah integral untuk menguji dan men-debug implementasi handler protokol Anda.

Topik ini diatur sebagai berikut:

Tentang penangan protokol penelusuran kesalahan

Proses SearchIndexer (searchindexer.exe) meluncurkan satu salinan proses SearchProtocolHost (SearchProtocolHost.exe) dalam konteks sistem dan salinan lain dalam konteks pengguna. Kemudian, handler protokol dimuat dalam proses SearchProtocolHost sesuai kebutuhan. Mereka tidak dibongkar sampai layanan pencarian dihentikan. Instans yang sama dari handler protokol digunakan kembali beberapa kali saat layanan berjalan.

Proses SearchIndexer dan SearchProtocolHost sering berkomunikasi selama pengindeksan. Jika Anda menjeda atau menghentikan proses SearchProtocolHost untuk men-debug, SearchIndexer akan meluncurkan proses SearchProtocolHost baru, membatalkan sesi penelusuran kesalahan Anda. Selain itu, jika Anda melampirkan debugger Anda langsung ke proses SearchProtocolHost, Anda dapat memutuskan pewarisan handel dari searchindexer.exe ke searchprotocolhost.exe, dan kedua proses tidak akan dapat berkomunikasi.

Untuk menghindari masalah ini, Anda perlu memberi tahu layanan pencarian bahwa Anda menelusuri kesalahan, dan Anda perlu melampirkan debugger ke proses SearchIndexer dengan instruksi untuk men-debug proses anak, seperti yang dijelaskan berikutnya.

Menyiapkan penelusuran kesalahan

Ikuti langkah-langkah ini untuk menyiapkan penelusuran kesalahan untuk handler protokol Anda.

  1. Beri tahu layanan pencarian bahwa Anda menelusuri kesalahan dengan mengatur nilai DebugFilters ke 1 di registri:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
       Windows Search
          Gathering Manager
             DebugFilters = 1
    
  2. Lampirkan debugger menggunakan kunci registri Opsi Eksekusi File Gambar:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
       Image File Execution Options
          SearchIndexer.exe
             Debugger = <path to debugger> <debugger options> 
    

    Opsi untuk debugger sampel dijelaskan dalam tabel berikut.

    Contoh menggunakan debugger debuggerntsd = C:\debuggers\ntsd.exe -odGx -c: "sxe ld mydll.dll; g"

  3. Mulai ulang searchindexer.exe di bawah debugger menggunakan compmgmt.msc, services.msc, atau jendela perintah dengan perintah yang mirip dengan yang berikut ini:

    net stop wsearch
    <copy new DLLs for debugging>
    net start wsearch
    

Untuk membedakan antara proses SearchProtocolHost yang berjalan dalam konteks sistem dan yang berjalan dalam konteks pengguna, Anda dapat meninjau string lingkungan. Dengan ntsd.exe, misalnya, Anda dapat menggunakan perintah ekstensi !peb untuk menampilkan tampilan informasi yang diformat di blok lingkungan proses (PEB).

Sumber daya tambahan

Konseptual