Compartir a través de


Depuración de controladores de protocolo

Comprender cómo se inician los controladores de protocolo es fundamental para probar y depurar las implementaciones del controlador de protocolo.

Este tema se organiza de la siguiente manera:

Acerca de la depuración de controladores de protocolo

El proceso SearchIndexer (searchindexer.exe) inicia una copia del proceso SearchProtocolHost (SearchProtocolHost.exe) en el contexto del sistema y otra copia en el contexto del usuario. A continuación, los controladores de protocolo se cargan en el proceso SearchProtocolHost según sea necesario. No se descargan hasta que se detiene el servicio de búsqueda. La misma instancia de un controlador de protocolo se reutiliza cualquier número de veces mientras se ejecuta el servicio.

Los procesos SearchIndexer y SearchProtocolHost se comunican con frecuencia durante la indexación. Si pausa o detiene el proceso searchProtocolHost para depurar, SearchIndexer iniciará un nuevo proceso searchProtocolHost, lo que invalidará la sesión de depuración. Además, si asocia el depurador directamente al proceso SearchProtocolHost, puede interrumpir la herencia de controlador entre searchindexer.exe y searchprotocolhost.exe, y los dos procesos no podrán comunicarse.

Para evitar estos problemas, debe notificar al servicio de búsqueda que está depurando y debe adjuntar el depurador al proceso SearchIndexer con instrucciones para depurar los procesos secundarios, como se describe a continuación.

Configurar la depuración

Siga estos pasos para configurar la depuración del controlador de protocolo.

  1. Notifique al servicio de búsqueda que está depurando estableciendo el valor DebugFilters en 1 en el Registro:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
       Windows Search
          Gathering Manager
             DebugFilters = 1
    
  2. Adjunte un depurador mediante la clave del Registro de Opciones de ejecución de archivo de imagen:

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

    Las opciones de un depurador de ejemplo se describen en la tabla siguiente.

    Ejemplo con el depurador ntsdDepurador = C:\debuggers\ntsd.exe -odGx -c: "sxe ld mydll.dll;g"

  3. Reinicie searchindexer.exe en el depurador mediante compmgmt.msc, services.msc o una ventana de comandos con comandos similares a los siguientes:

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

Para distinguir entre un proceso searchProtocolHost que se ejecuta en el contexto del sistema y otro que se ejecuta en el contexto de usuario, puede revisar las cadenas de entorno. Con ntsd.exe, por ejemplo, puede usar el comando de extensión !peb para mostrar una vista con formato de la información en el bloque de entorno de proceso (PEB).

Recursos adicionales

Conceptual