Поделиться через


Обработчики протокола отладки

Понимание того, как запускаются обработчики протоколов, является неотъемлемой частью тестирования и отладки реализаций обработчика протокола.

Этот раздел организован следующим образом:

Сведения об обработчиках протокола отладки

Процесс SearchIndexer (searchindexer.exe) запускает одну копию процесса SearchProtocolHost (SearchProtocolHost.exe) в системном контексте и еще одну копию в контексте пользователя. Затем обработчики протокола загружаются в процесс SearchProtocolHost по мере необходимости. Они не выгружаются до остановки службы поиска. Тот же экземпляр обработчика протокола повторно используется любое количество раз во время выполнения службы.

Процессы SearchIndexer и SearchProtocolHost часто взаимодействуют во время индексирования. Если вы приостанавливаете или останавливаете процесс SearchProtocolHost для отладки, searchIndexer запустит новый процесс SearchProtocolHost, недействив сеанс отладки. Кроме того, при подключении отладчика непосредственно к процессу SearchProtocolHost можно прервать наследование дескрипторов от searchindexer.exe к searchprotocolhost.exe, и два процесса не смогут взаимодействовать.

Чтобы избежать этих проблем, необходимо уведомить службу поиска о том, что выполняется отладка, и необходимо подключить отладчик к процессу SearchIndexer с инструкциями по отладке дочерних процессов, как описано далее.

Настройка отладки

Выполните следующие действия, чтобы настроить отладку для обработчика протокола.

  1. Сообщите службе поиска, что выполняется отладка, задав значение DebugFilters равным 1 в реестре:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
       Windows Search
          Gathering Manager
             DebugFilters = 1
    
  2. Присоединение отладчика с помощью раздела реестра параметров выполнения файла изображений:

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

    Параметры для примера отладчика описаны в следующей таблице.

    Пример использования отладчикаntsd = C:\debuggers\ntsd.exe -odGx -c: "sxe ld mydll.dll; g"

  3. Перезапустите searchindexer.exe под отладчиком с помощью compmgmt.msc, services.msc или командного окна с командами, аналогичными следующим:

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

Чтобы отличить процесс SearchProtocolHost, выполняемый в системном контексте, и один запущенный в контексте пользователя, можно просмотреть строки среды. Например, с помощью ntsd.exe можно использовать команду расширения !peb для отображения форматированного представления сведений в блоке среды процесса (PEB).

Дополнительные ресурсы

Концептуальной