프로토콜 처리기 디버깅
프로토콜 처리기를 시작하는 방법을 이해하는 것은 프로토콜 처리기 구현을 테스트하고 디버깅하는 데 필수적입니다.
이 항목은 다음과 같이 구성됩니다.
프로토콜 처리기 디버깅 정보
SearchIndexer 프로세스(searchindexer.exe)는 시스템 컨텍스트에서 SearchProtocolHost 프로세스(SearchProtocolHost.exe)의 복사본 하나와 사용자 컨텍스트의 다른 복사본을 시작합니다. 그런 다음 필요에 따라 프로토콜 처리기가 SearchProtocolHost 프로세스에 로드됩니다. 검색 서비스가 중지될 때까지 언로드되지 않습니다. 서비스가 실행되는 동안 프로토콜 처리기의 동일한 인스턴스가 여러 번 다시 사용됩니다.
SearchIndexer 및 SearchProtocolHost 프로세스는 인덱싱 중에 자주 통신합니다. 디버그할 SearchProtocolHost 프로세스를 일시 중지하거나 중지하면 SearchIndexer에서 새 SearchProtocolHost 프로세스가 시작되어 디버깅 세션이 무효화됩니다. 또한 디버거를 SearchProtocolHost 프로세스에 직접 연결하는 경우 searchindexer.exe에서 searchprotocolhost.exe로 핸들 상속을 중단하면 두 프로세스가 통신할 수 없습니다.
이러한 문제를 방지하려면 디버깅 중임을 검색 서비스에 알려야 하며, 다음에 설명된 대로 자식 프로세스를 디버그하는 지침과 함께 디버거를 SearchIndexer 프로세스에 연결해야 합니다.
디버깅 설정
다음 단계에 따라 프로토콜 처리기에 대한 디버깅을 설정합니다.
레지스트리에서 DebugFilters 값을 1로 설정하여 디버깅 중임을 검색 서비스에 알립니다.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft Windows Search Gathering Manager DebugFilters = 1
이미지 파일 실행 옵션 레지스트리 키를 사용하여 디버거를 연결합니다.
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"
compmgmt.msc, services.msc 또는 명령 창에서 다음과 유사한 명령을 사용하여 디버거에서 searchindexer.exe를 다시 시작합니다.
net stop wsearch <copy new DLLs for debugging> net start wsearch
시스템 컨텍스트에서 실행되는 SearchProtocolHost 프로세스와 사용자 컨텍스트에서 실행되는 프로세스를 구분하기 위해 환경 문자열을 검토할 수 있습니다. 예를 들어 ntsd.exe를 사용하면 확장 명령 !peb를 사용하여 PEB (프로세스 환경 블록)에서 정보의 서식이 지정된 보기를 표시할 수 있습니다.
추가 리소스
- 처리기를 만드는 방법에 대한 자세한 내용은 셸 확장 등록을 참조 하세요.
관련 항목
개념