수동으로 서비스 애플리케이션 디버깅
서비스 애플리케이션이 시작된 후 수동으로 연결하는 것은 실행 중인 모든 사용자 모드 프로세스를 디버깅하는 것과 비슷합니다.
/s 옵션과 함께 TList 도구를 사용하여 각 실행 중인 프로세스의 PID(프로세스 ID)와 각 프로세스에서 활성 상태인 서비스를 표시합니다.
디버그하려는 서비스 애플리케이션이 단일 프로세스에서 다른 서비스와 결합된 경우 디버깅하기 전에 격리해야 합니다. 이렇게 하려면 서비스 격리에 설명된 절차를 수행합니다. 이 절차의 끝에서 서비스를 다시 시작합니다.
서비스의 새 PID를 확인하려면 다음 서비스 구성 도구(Sc.exe) 명령을 실행합니다. 여기서 ServiceName 은 서비스의 이름입니다.
sc queryex ServiceName
이제 이 서비스 애플리케이션을 대상으로 사용하여 WinDbg 또는 CDB를 시작합니다. 이 작업을 수행하는 세 가지 방법은 -p 옵션을 사용하여 PID를 지정하거나, 실행 파일 이름을 -pn 옵션으로 지정하거나(실행 파일이 고유한 경우) -psn 옵션을 사용하여 서비스 이름을 지정하는 것입니다.
예를 들어 프로세스 SpoolSv.exe PID가 651이고 Spooler라는 서비스가 포함된 경우 다음 세 명령은 동일합니다.
windbg -p 651 [AdditionalOptions]
windbg -pn spoolsv.exe [AdditionalOptions]
windbg -psn spooler [AdditionalOptions]
디버거가 시작된 후 다른 사용자 모드 디버깅 세션에서와 마찬가지로 계속 진행합니다.