Windows 서비스를 디버깅하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 824344 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 Windows 디버깅 방법을 설명합니다 (windbg.exe) WinDbg 디버거에서 사용하여 서비스. Windows 서비스를 디버깅하려면 서비스가 시작되면 서비스를 호스팅하는 프로세스 WinDbg 디버거를 연결할 수 또는 서비스를 사용하여 WinDbg 시작하도록 구성할 수 서비스 시작 관련된 문제를 해결할 수 있도록 연결된 디버거가. 이 문서에서는 이러한 두 방법을 모두 설명합니다.

요구 사항

이 문서에서는 사용자가 다음 항목을 잘 알고 있다고 가정합니다.
  • Windows 서비스
  • WinDbg 디버거

서비스가 시작되면 WinDbg 디버거에서를 서비스에 연결하십시오.

이 메서드는 프로세스에 디버거 및 프로세스를 디버깅할 수 있는 메서드를 비슷합니다.

디버그 대상 서비스를 호스팅하는 프로세스의 프로세스 ID를 사용하십시오.

  1. 프로세스 ID(PID) 디버깅하려는 서비스를 호스팅하는 프로세스의 확인하려면 다음 방법 중 하나를 사용하십시오.
    • 방법 1: 작업 관리자 사용
      1. 작업 표시줄을 마우스 오른쪽 단추로 누른 다음 작업 관리자 를 누릅니다. Windows 작업 관리자 대화 상자가 나타납니다.
      2. Windows 작업 관리자 대화 상자의 프로세스 탭을 클릭하십시오.
      3. 이미지 이름 디버깅하려는 서비스를 호스팅하는 프로세스의 이미지 이름을 클릭하십시오. 해당 PID 는 필드의 값이 지정된 대로 이 프로세스의 프로세스 ID를 유의하십시오.
    • 방법 2: 작업 목록 유틸리티 (tlist.exe) 사용
      1. 시작 을 누른 다음 실행 을 클릭하십시오. 실행 대화 상자가 나타납니다.
      2. 열기 상자에 cmd 를 입력한 다음 확인 을 누릅니다.
      3. 명령 프롬프트에서 컴퓨터 tlist.exe 파일의 위치를 반영하도록 디렉터리 경로를 변경하십시오.

        참고 일반적으로 다음 디렉터리에 tlist.exe 파일이 있는: C:\Program Files\Debugging Windows용 도구
      4. 이미지 이름 및 프로세스 ID 컴퓨터에서 현재 실행 중인 모든 프로세스를 나열할 tlist 명령 프롬프트에서 입력하십시오.

        참고 디버그 대상 서비스를 호스팅하는 프로세스의 프로세스 ID 적어를 두십시오.
  2. 명령 프롬프트에서 컴퓨터 windbg.exe 파일의 위치를 반영하도록 디렉터리 경로를 변경하십시오.

    참고 명령 프롬프트를 열려 있지 않은 경우 단계를 사용하여 및 방법 1의 b. 일반적으로 다음 디렉터리에 windbg.exe 파일이 있는: C:\Program Files\Debugging Windows용 도구.
  3. WinDbg 디버거에서 디버그하려면 원하는 서비스를 호스트하는 프로세스에 windbg ?p ProcessID/g 명령 프롬프트에서 입력하십시오.

    참고ProcessID 디버깅하려는 서비스를 호스팅하는 프로세스의 프로세스 ID 자리 표시자입니다.

디버깅하려는 서비스를 호스팅하는 프로세스의 이미지 이름을 사용하십시오.

실행할 서비스를 호스팅하는 프로세스 실행 중인 인스턴스가 하나만 있을 경우 이 메서드를 사용할 수 있습니다. 이렇게 하려면 다음과 같이 하십시오.
  1. 시작 을 누른 다음 실행 을 클릭하십시오. 실행 대화 상자가 나타납니다.
  2. 열기 상자에 cmd 를 입력한 다음 명령 프롬프트를 열려면 확인 누릅니다.
  3. 명령 프롬프트에서 컴퓨터 windbg.exe 파일의 위치를 반영하도록 디렉터리 경로를 변경하십시오.

    참고 일반적으로 다음 디렉터리에 windbg.exe 파일이 있는: C:\Program Files\Debugging Windows용 도구.
  4. WinDbg 디버거에서 디버그하려면 원하는 서비스를 호스트하는 프로세스에 windbg ?pn ImageName/g 명령 프롬프트에서 입력하십시오.

    참고ImageName 디버깅하려는 서비스를 호스팅하는 프로세스의 이미지 이름 자리 표시자입니다. 해당 "-pn" 명령줄 옵션을 ImageName 명령줄 인수를 사용하여 프로세스의 이미지 이름을 지정합니다.

WinDbg 디버거에서 시작하고 디버깅하려는 서비스를 호스트하는 프로세스에

  1. Windows 탐색기를 시작하십시오.
  2. 컴퓨터에 windbg.exe 파일을 찾습니다.

    참고 일반적으로 다음 디렉터리에 windbg.exe 파일이 있는: C:\Program Files\Debugging Windows용 도구
  3. windbg.exe 파일을 해당 WinDbg 시작하려면 /g 명령줄 스위치와 함께 실행하여 디버거를. /g 명령줄 스위치가 추적된 프로세스가 중단 지점을 설정한 후에 계속 있습니다.
  4. [파일] 메뉴에서 [프로세스에 연결 대화 상자를 표시할 수 있는 프로세스에 연결 클릭하십시오.
  5. 디버그 대상 서비스를 호스팅하는 프로세스에 해당하는 노드를 선택합니다 누른 다음 확인 을 누릅니다.
  6. 나타나는 대화 상자에서 기본 작업 정보를 저장하려면 를 클릭하십시오. 이제 서비스 디스어셈블된 코드를 디버깅할 수 있습니다.

WinDbg 함께 시작하도록 서비스를 구성할 첨부된 디버거

이 메서드는 서비스 시작 관련된 문제를 해결할 경우 서비스를 디버깅할 수 있습니다.
  1. 이미지 파일 실행 옵션을 구성하십시오. 이렇게 하려면 다음 방법 중 하나를 사용하십시오.
    • 방법 1: 글로벌 플래그 편집기 (gflags.exe) 사용
      1. Windows 탐색기를 시작하십시오.
      2. 컴퓨터에 gflags.exe 파일을 찾습니다.

        참고 일반적으로 gflags.exe 파일이 다음 디렉터리에서 있는: C:\Program Files\Debugging Windows용 도구.
      3. 글로벌 플래그 시작 gflags.exe 파일을 실행하여 편집기.
      4. 이미지 파일 이름 텍스트 상자에서 디버깅하려는 서비스를 호스팅하는 프로세스의 이미지 이름을 입력하십시오. 예를 들어, MyService.exe 이미지 이름으로 프로세스에 의해 호스팅되는 서비스를 디버깅할 경우 MyService.exe를 입력하십시오.
      5. 대상이미지 파일 옵션 옵션을 선택하려면 클릭하십시오.
      6. 이미지 디버거 옵션 눌러 디버거 확인란을 선택합니다.
      7. 디버거 텍스트 상자에 사용할 디버거 전체 경로를 입력하십시오. 예를 들어, 서비스를 디버깅하려면 WinDbg 디버거에서 사용할 경우 다음과 유사한 전체 경로를 입력할 수 있습니다: Windows\windbg.exe C:\Program Files\Debugging 도구
      8. 적용 을 누른 다음 글로벌 플래그 편집기를 종료하려면 확인 누릅니다.
    • 방법 2: 레지스트리 편집기 사용
      1. 시작 을 누른 다음 실행 을 클릭하십시오. 실행 대화 상자가 나타납니다.
      2. 열기 상자에 regedit 를 입력한 다음 레지스트리 편집기를 시작하려면 확인 누릅니다.
      3. 중요한 이 섹션에서는, 메서드 또는 작업이 레지스트리 수정 방법을 알려 주는 단계가 포함되어 있습니다. 그러나 레지스트리를 잘못 수정하면 심각한 문제가 발생할 수 있습니다. 따라서 다음 이 단계를 주의 깊게 따라야 합니다. 추가 보호 기능을 수정하기 전에 레지스트리를 백업해야. 그런 다음 문제가 발생할 경우 레지스트리를 복원할 수 있습니다. 백업 및 복원하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
        322756백업 및 Windows 에서 레지스트리를 복원하는 방법


        레지스트리 편집기에서 찾아 다음 레지스트리 하위 키를 마우스 오른쪽 단추로 누릅니다.
        HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
      4. 새로 만들기를 가리킨 다음 를 클릭하십시오. 레지스트리 편집기의 왼쪽된 창에서 새 키 # 1 새 레지스트리 하위 키의 이름 을 편집할 수 있도록 선택되어 있습니다.
      5. ImageName새 키 # 1, 교체하고 Enter 키를 입력하십시오.

        참고ImageName 디버깅하려는 서비스를 호스팅하는 프로세스의 이미지 이름 자리 표시자입니다. 예를 들어, MyService.exe 이미지 이름으로 프로세스에 의해 호스팅되는 서비스를 디버깅할 경우 MyService.exe를 입력하십시오.
      6. e 단계에서 만든 레지스트리 하위 키를 마우스 오른쪽 단추로 클릭하십시오.
      7. 새로 만들기를 가리킨 다음 문자열 값 을 클릭하십시오. 레지스트리 편집기의 오른쪽 창에서 새 값 # 1, 새 레지스트리 항목의 이름 을 편집할 수 있도록 선택되어 있습니다.
      8. 디버거 를 사용하여 새 값 # 1 바꾼 다음 Enter 키를 누릅니다.
      9. 단계 h 만든 디버거 레지스트리 항목을 마우스 오른쪽 단추로 클릭한 다음 수정 을 클릭하십시오. 문자열 편집 대화 상자가 나타납니다.
      10. 값 데이터 텍스트 상자에 DebuggerPath 를 입력한 다음 확인 을 누릅니다.

        참고DebuggerPath 사용할 디버거 전체 경로 자리 표시자입니다. 예를 들어, 서비스를 디버깅하려면 WinDbg 디버거에서 사용할 경우 다음과 비슷한 전체 경로를 입력할 수 있습니다.
        C:\Progra~1\Debugg~1\windbg.exe
  2. 디버거 창에 대해 바탕 화면에 표시할 및 디버거를 사용하여 상호 작용할 수, 대화형 서비스를 확인하십시오. 사용자가 서비스에 대화형 만들지 마십시오 경우 디버거를 시작할 수 있지만 볼 수 없습니다 다음 명령을 실행할 수 없습니다. 대화형 서비스를 만들려면 다음 방법 중 하나를 사용하십시오.
    • 방법 1: 서비스 콘솔 사용
      1. 시작 을 누른 다음 프로그램 을 가리킵니다.
      2. 프로그램 메뉴에 관리 도구 차례로 가리킨 다음 서비스 를 클릭하십시오. 서비스 콘솔에 나타납니다.
      3. 오른쪽 창에서 서비스 콘솔 ServiceName 을 마우스 오른쪽 단추로 클릭한 다음 속성 을 클릭합니다.

        참고ServiceName 디버그 대상 서비스 이름에 대한 자리 표시자입니다.
      4. 로그온 탭의 로컬 시스템 계정, 서비스와 데스크톱 상호 작용 허용 확인란을 선택한 클릭한 다음 확인 을 누릅니다.
    • 방법 2: 레지스트리 편집기 사용
      1. 레지스트리 편집기에서 찾아 다음 레지스트리 하위 키를 누릅니다.
        HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ServiceName
        참고ServiceName 디버깅하려는 서비스의 이름으로 대체하십시오. 예를 들어, MyService 명명된 서비스를 디버깅하려면 찾은 후 다음 레지스트리 키를 누릅니다.
        HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService
      2. 레지스트리 편집기의 오른쪽 창에서 이름 필드에서 형식 을 마우스 오른쪽 단추로 클릭한 다음 수정 을 클릭하십시오. DWORD 값 편집 대화 상자가 나타납니다.
      3. 값 데이터 텍스트 변경 이진 값 가진 이진 OR 연산의 결과가 텍스트 상자에 현재 텍스트 및 이진 값을 0x00000100 두 피연산자가 같은. 이진값, 0x00000100, 컴퓨터의 WinNT.h 헤더 파일에 정의된 SERVICE_INTERACTIVE_PROCESS 상수를 해당합니다. 이 상수는 서비스를 본질적으로 대화형 지정합니다.
  3. 서비스를 시작할 때 서비스를 위해 서비스 제어 서비스 제한 시간 서비스를 시작할 수 있어야 합니다 관리자가 얼마나 오래 통신합니다. 서비스 제어 관리자가 서비스에서 이 제한 시간 안에 서비스가 시작되지 알림의 받을 경우 서비스 제어 관리자가 서비스를 호스팅하는 프로세스를 종료합니다. 일반적으로 이 제한 시간 30 초 미만의 것입니다. 이 시간 제한 기간을 조정할 디버깅하려고 시도하는 동안 서비스 제어 관리자가 프로세스와 연결된 디버거가 종료됩니다. 이 제한 시간을 조정하려면 다음과 같이 하십시오.
    1. 레지스트리 편집기에서 찾아 다음 레지스트리 하위 키를 마우스 오른쪽 단추로 누릅니다.
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
    2. 새로 만들기를 가리킨 다음 DWORD 값 을 클릭하십시오. 레지스트리 편집기의 오른쪽 창에서 새 값 # 1 새 레지스트리 항목의 이름 을 편집할 수 있도록 선택되어 있습니다.
    3. 새 값 # 1, 교체하고 Enter 키를 누르면 ServicesPipeTimeout 입력하십시오.
    4. ServicesPipeTimeout 마우스 오른쪽 단추로 레지스트리 항목을 c단계에서, 만들고 다음 수정 을 클릭합니다. DWORD 값 편집 대화 상자가 나타납니다.
    5. 값 데이터 텍스트 상자에 TimeoutPeriod 를 입력한 다음 확인 을 클릭하십시오

      참고TimeoutPeriod 대한 서비스를 설정하려면 원하는 제한 시간 (밀리초) 값에 대한 자리 표시자입니다. 예를 들어, 24시간 86400000 밀리초 단위의 시간 제한 기간을 설정할 경우 86400000을 입력하십시오.
    6. 컴퓨터를 다시 시작하십시오. 대한 서비스 제어 이 변경 내용을 적용하려면 관리자가 컴퓨터를 다시 시작해야 합니다.
  4. Windows 서비스를 시작하십시오. 이렇게 하려면 다음과 같이 하십시오.
    1. 시작 을 누른 다음 프로그램 을 가리킵니다.
    2. 프로그램 메뉴에 관리 도구 차례로 가리킨 다음 서비스 를 클릭하십시오. 서비스 콘솔에 나타납니다.
    3. 오른쪽 창에서 서비스 콘솔 ServiceName 을 마우스 오른쪽 단추로 클릭한 다음 시작 을 클릭합니다.

      참고ServiceName 디버그 대상 서비스 이름에 대한 자리 표시자입니다.

문제 해결

네트워크를 통해 서비스를 디버깅하려면 먼저 서비스를 사용하는 소스 파일과 기호를 서비스가 실행될 컴퓨터에서 액세스할 수 있는지 확인하십시오. 이렇게 하려면 다음 방법 중 하나를 사용하십시오.
  • 모든 컴퓨터의 기호와 서비스를 사용하는 소스 파일을 포함하는 폴더에 대해 최소한 읽기 액세스 권한을 부여하십시오.
  • 서비스가 실행될 컴퓨터에서 이러한 기호 및 서비스가 사용하는 소스 파일을 복사하십시오.

참조

도구 및 이 문서에서 언급한 유틸리티를 다운로드하려면 다음 Microsoft 웹 사이트를 방문하십시오.
Windows 디버깅 도구를: 개요
http://www.microsoft.com/whdc/devtools/debugging/default.mspx
자세한 내용은 다음 Microsoft 개발자 방문하십시오 (네트워크) MSDN 웹 사이트:
WinDbg 디버거에서
http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx
서비스
http://msdn2.microsoft.com/en-us/library/ms685141.aspx
글로벌 플래그 사용하여 유틸리티
http://msdn2.microsoft.com/en-us/library/ms792858.aspx

속성

기술 자료: 824344 - 마지막 검토: 2007년 5월 16일 수요일 - 수정: 6.5
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Datacenter Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Home Edition SP1
  • Microsoft Windows XP Home Edition SP1a
  • Microsoft Windows XP Home Edition SP2
  • Microsoft Windows XP Professional
  • Microsoft Windows XP Professional SP1
  • Microsoft Windows XP Professional SP1a
  • Microsoft Windows XP Professional SP2
키워드:?
kbmt kbimghlp kbregistry kbservice kbdebug kbmisctools kbhowtomaster KB824344 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com