대상 애플리케이션에 다시 연결

사용자 모드 디버깅을 수행하는 동안 디버거가 중지되거나 응답하지 않는 경우(즉, 크래시) 기존 프로세스에 새 디버거를 연결할 수 있습니다.

참고 이 메서드는 Microsoft Windows XP 이상 버전의 Windows에서만 지원됩니다. 이 메서드는 디버거가 원래 프로세스를 만들었는지 아니면 기존 프로세스에 연결되었는지에 따라 달라지지 않습니다. 이 메서드는 -pd 옵션을 사용했는지 여부에 따라 달라지지 않습니다.

디버거를 기존 대상 애플리케이션에 다시 연결하려면 다음을 수행합니다.

  1. 대상 애플리케이션의 프로세스 ID를 확인합니다.

  2. CDB 또는 WinDbg의 새 instance 시작합니다. -pe 명령줄 옵션을 사용합니다.

    Debugger -pe -p PID 
    

    다른 명령줄 옵션을 사용할 수도 있습니다.

    . attach(프로세스에 연결) 명령을 -e 옵션과 함께 사용하여 휴면 디버거에서 연결할 수도 있습니다.

  3. 연결이 완료되면 원래 디버거 프로세스를 종료합니다.

  4. 프로세스가 제대로 응답하지 않으면 일시 중단 횟수가 너무 높을 수 있습니다. ~m(스레드 다시 시작) 명령을 사용하여 일시 중단 횟수를 줄일 수 있습니다. 일시 중단 수에 대한 자세한 내용은 프로세스 및 스레드 제어를 참조하세요.

원래 디버거가 여전히 제대로 작동하는 경우 이 메서드가 작동하지 않을 수 있습니다. 두 디버거는 디버깅 이벤트를 위해 경쟁하고 있으며 Windows 운영 체제에서 모든 디버깅 이벤트를 새 디버거에 할당할 필요는 없습니다.

새 디버거를 연결하기 전에 원래 디버거가 종료되면 대상 애플리케이션도 닫힙니다. 그러나 -pd 옵션과 연결된 디버거가 정상적으로 종료되면 대상 애플리케이션이 계속 실행됩니다. 이 경우 두 번째 디버거는 -pe 옵션을 사용하지 않고 대상 애플리케이션에 연결할 수 있습니다.)

프로세스를 이미 디버깅 중이고 프로세스에서 분리하지만 디버깅 상태로 고정된 상태로 두려는 경우 .abandon(프로세스 중단) 명령을 사용할 수 있습니다. 이 명령 후에는 이 항목에 설명된 절차를 사용하여 모든 Windows 디버거를 프로세스에 다시 연결할 수 있습니다.