Débogage de gestionnaires de protocole

L’intégralité du test et du débogage de vos implémentations de gestionnaires de protocole consiste à comprendre comment les gestionnaires de protocole sont lancés.

Cette rubrique est organisée comme suit :

À propos du débogage des gestionnaires de protocole

Le processus SearchIndexer (searchindexer.exe) lance une copie du processus SearchProtocolHost (SearchProtocolHost.exe) dans le contexte système et une autre copie dans le contexte de l’utilisateur. Ensuite, les gestionnaires de protocole sont chargés dans le processus SearchProtocolHost en fonction des besoins. Ils ne sont pas déchargés tant que le service de recherche n’est pas arrêté. La même instance d’un gestionnaire de protocole est réutilisée autant de fois que le service est en cours d’exécution.

Les processus SearchIndexer et SearchProtocolHost communiquent fréquemment pendant l’indexation. Si vous suspendez ou arrêtez le processus SearchProtocolHost à déboguer, le SearchIndexer lance un nouveau processus SearchProtocolHost, invalidant la session de débogage. En outre, si vous attachez directement votre débogueur au processus SearchProtocolHost, vous pouvez rompre l’héritage handle-héritage à partir de searchindexer.exe à searchprotocolhost.exe, et les deux processus ne pourront pas communiquer.

Pour éviter ces problèmes, vous devez notifier le service de recherche que vous déboguez, et vous devez attacher le débogueur au processus SearchIndexer avec des instructions pour déboguer les processus enfants, comme décrit ci-dessous.

Configuration du débogage

Procédez comme suit pour configurer le débogage de votre gestionnaire de protocole.

  1. Informez le service de recherche que vous déboguez en affectant la valeur 1 à la valeur DebugFilters dans le registre :

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
       Windows Search
          Gathering Manager
             DebugFilters = 1
    
  2. Attachez un débogueur à l’aide de la clé de registre des options d’exécution du fichier image :

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

    Les options d’un débogueur d’exemple sont décrites dans le tableau suivant.

    Exemple utilisant le débogueur ntsd Debugger = C : \ débogueurs \ntsd.exe-odGx-C : "sXe LD mydll.dll ; g"

  3. Redémarrez searchindexer.exe sous le débogueur en utilisant compmgmt. msc, services. msc ou une fenêtre de commande avec des commandes semblables à ce qui suit :

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

Pour faire la distinction entre un processus SearchProtocolHost en cours d’exécution dans le contexte système et un processus en cours d’exécution dans le contexte de l’utilisateur, vous pouvez passer en revue les chaînes d’environnement. Par exemple, avec ntsd.exe, vous pouvez utiliser la commande d’extension ! PEB pour afficher une vue mise en forme des informations contenues dans le bloc Process Environment (PEB).

Ressources supplémentaires

Développement
**conceptuel**
de
gestionnaires de protocoles
Présentation des gestionnaires de protocole
notification de l’index des modifications
Ajout d’icônes et de menus contextuels
exemple de code : extensions de Shell pour les gestionnaires de protocole
création d’un connecteur de recherche pour un gestionnaire de protocole
installation et inscription de gestionnaires de protocole