Partager via


Débogage des gestionnaires de protocoles

Comprendre que le mode de lancement des gestionnaires de protocoles fait partie intégrante du test et du débogage de vos implémentations de gestionnaire de protocole.

Cette rubrique est organisée comme suit :

À propos du débogage des gestionnaires de protocoles

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 utilisateur. Ensuite, les gestionnaires de protocoles sont chargés dans le processus SearchProtocolHost selon les 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 plusieurs fois pendant l’exécution du service.

Les processus SearchIndexer et SearchProtocolHost communiquent fréquemment pendant l’indexation. Si vous interrompez ou arrêtez le processus SearchProtocolHost pour déboguer, SearchIndexer lance un nouveau processus SearchProtocolHost, invalidant votre session de débogage. De plus, si vous attachez votre débogueur directement au processus SearchProtocolHost, vous pouvez casser l’héritage de handle entre searchindexer.exe et searchprotocolhost.exe, et les deux processus ne pourront pas communiquer.

Pour éviter ces problèmes, vous devez informer 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

Suivez ces étapes pour configurer le débogage de votre gestionnaire de protocole.

  1. Informez le service de recherche que vous déboguez en définissant la valeur DebugFilters sur 1 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 Options d’exécution de fichier image :

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

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

    Exemple utilisant le débogueur ntsdDebugger = C:\debuggers\ntsd.exe -odGx -c: "sxe ld mydll.dll;g"

  3. Redémarrez searchindexer.exe sous le débogueur avec compmgmt.msc, services.msc ou une fenêtre de commandes avec des commandes similaires aux suivantes :

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

Pour faire la distinction entre un processus SearchProtocolHost qui s’exécute dans le contexte système et un qui s’exécute dans le contexte utilisateur, vous pouvez passer en revue les chaînes d’environnement. Avec ntsd.exe, par exemple, vous pouvez utiliser la commande d’extension !peb pour afficher une vue mise en forme des informations dans le bloc d’environnement de processus (PEB).

Ressources supplémentaires

Conceptuel