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


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

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

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

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

Процесс 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).

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

концептуальные