Gestori del protocollo di debug
La comprensione del modo in cui i gestori di protocollo vengono avviati è parte integrante del test e del debug delle implementazioni del gestore di protocollo.
Questo argomento è organizzato come segue:
- Informazioni sui gestori del protocollo di debug
- Configurazione del debug
- Risorse aggiuntive
- Argomenti correlati
Informazioni sui gestori del protocollo di debug
Il processo SearchIndexer (searchindexer.exe) avvia una copia del processo SearchProtocolHost (SearchProtocolHost.exe) nel contesto di sistema e un'altra copia nel contesto utente. I gestori di protocollo vengono quindi caricati nel processo SearchProtocolHost in base alle esigenze. Non vengono scaricati finché il servizio di ricerca non viene arrestato. La stessa istanza di un gestore di protocollo viene riutilizzata un numero qualsiasi di volte durante l'esecuzione del servizio.
I processi SearchIndexer e SearchProtocolHost comunicano spesso durante l'indicizzazione. Se si sospende o arresta il processo SearchProtocolHost per eseguire il debug, SearchIndexer avvierà un nuovo processo SearchProtocolHost, invalidando la sessione di debug. Inoltre, se si collega il debugger direttamente al processo SearchProtocolHost, è possibile interrompere l'ereditarietà del handle da searchindexer.exe a searchprotocolhost.exe e i due processi non saranno in grado di comunicare.
Per evitare questi problemi, è necessario notificare al servizio di ricerca che si sta eseguendo il debug ed è necessario collegare il debugger al processo SearchIndexer con istruzioni per eseguire il debug dei processi figlio, come descritto di seguito.
Configurazione del debug
Seguire questa procedura per configurare il debug per il gestore del protocollo.
Notificare al servizio di ricerca che si sta eseguendo il debug impostando il valore DebugFilters su 1 nel Registro di sistema:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft Windows Search Gathering Manager DebugFilters = 1
Collegare un debugger usando la chiave del Registro di sistema Opzioni di esecuzione file immagine:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion Image File Execution Options SearchIndexer.exe Debugger = <path to debugger> <debugger options>
Le opzioni per un debugger di esempio sono descritte nella tabella seguente.
Esempio che usa il debuggerntsd Debugger = C:\debuggers\ntsd.exe -odGx -c: "sxe ld mydll.dll; g"
Riavviare searchindexer.exe nel debugger usando compmgmt.msc, services.msc o una finestra di comando con comandi simili al seguente:
net stop wsearch <copy new DLLs for debugging> net start wsearch
Per distinguere tra un processo SearchProtocolHost in esecuzione nel contesto di sistema e uno in esecuzione nel contesto utente, è possibile esaminare le stringhe di ambiente. Con ntsd.exe, ad esempio, è possibile usare il comando di estensione !peb per visualizzare una visualizzazione formattata delle informazioni nel blocco di ambiente del processo (PEB).
Risorse aggiuntive
- Per informazioni sulla creazione di gestori, vedere Registrazione delle estensioni della shell.
Argomenti correlati
Concettuale
- Sviluppo di gestori di protocolli
- Informazioni sui gestori di protocolli
- Notifica dell'indice delle modifiche
- Aggiunta di icone e menu di scelta rapida
- Esempio di codice: Estensioni della shell per gestori di protocollo
- Creazione di un Connessione or di ricerca per un gestore del protocollo
- Installazione e registrazione dei gestori di protocollo