Visual Studio 디버거에서 실행 중인 프로세스에 연결
이 항목에서는 실행 중인 프로세스에 연결하는 방법, 원격 컴퓨터의 프로세스에 연결하는 방법 및 연결 오류 문제를 해결하는 방법을 보여 줍니다.
연결된 프로세스를 디버깅하는 이유
Visual Studio 디버거는 Visual Studio 외부에서 실행되고 있는 프로세스에 연결할 수 있습니다.이 연결 기능은 다음과 같은 경우에 사용할 수 있습니다.
Visual Studio에서 생성되지 않은 응용 프로그램을 디버그하는 경우
여러 프로세스를 동시에 디버깅하는 경우.단일 솔루션 내에서 여러 프로젝트를 시작하여 여러 프로세스를 디버깅할 수도 있습니다.
원격 컴퓨터에서 실행되고 있는 프로세스를 디버깅하는 경우
Visual Studio에서 시작하기가 어려운 별도의 프로세스에서 실행되는 DLL을 디버깅하는 경우(예: 인터넷 정보 서비스에서 실행되는 서비스나 ISAPI DLL)
Visual Studio의 외부에서 실행하는 동안 프로세스가 충돌할 때 자동으로 디버거를 시작하는 경우(Just-In-Time 디버깅)
일단 프로그램에 연결되면 디버거 실행 명령을 사용하고 프로그램 상태를 검사하는 등의 작업을 수행할 수 있습니다.자세한 내용은 Visual Studio에서 하나 이상의 프로세스 디버깅, Visual Studio에서 디버깅 시작, 중단, 단계별 실행, 실행 및 중지 및 디버거에서 데이터 보기을 참조하십시오.디버그 정보를 사용하여 프로그램을 빌드했는지 여부, 프로그램의 소스 코드에 액세스할 수 있는지 여부 및 공용 언어 런타임 JIT 컴파일러가 디버그 정보를 추적하고 있는지 여부에 따라 프로그램 검사 기능이 제한될 수 있습니다.
C++ 정보 |
---|
디버거에서 C++로 작성된 코드에 연결하려면 코드에 DebuggableAttribute가 있어야 합니다.이 특성은 /ASSEMBLYDEBUG 링커 옵션으로 링크하여 자동으로 코드에 추가할 수 있습니다. |
주의 |
---|
JavaScript로 작성된 Windows 스토어 응용 프로그램에 연결하려면 먼저 응용 프로그램을 디버깅할 수 있도록 설정해야 합니다.Windows 개발자 센터에서 Attach the debugger을 참조하십시오. |
실행 중인 프로세스에 연결
디버그 메뉴에서 프로세스에 연결을 선택합니다.
프로세스에 연결 대화 상자의 사용 가능한 프로세스 목록에서 연결할 프로그램을 찾습니다.
디버깅할 프로그램이 다른 컴퓨터에서 실행되는 경우 한정자 목록 상자를 사용하여 원격 컴퓨터를 선택하거나 지정할 수 있습니다.자세한 내용은 원격 디버깅 및 진단을 참조하십시오.
프로세스가 다른 사용자 계정으로 실행되고 있으면 모든 사용자의 프로세스 표시 확인란을 선택합니다.
원격 데스크톱 연결을 통해 연결되어 있으면 모든 세션의 프로세스 표시 확인란을 선택합니다.
연결 대상 상자에서 디버그할 코드 형식이 나열되어 있는지 확인합니다.기본 자동 설정은 디버깅할 코드 형식을 결정합니다.자동 설정이 알맞지 않은 경우 다음을 수행합니다.
선택을 클릭합니다.
코드 형식 선택 대화 상자에서 다음 코드 형식 디버깅을 클릭하고 디버깅할 형식을 선택합니다.
확인을 클릭합니다.
연결을 클릭합니다.
사용 가능한 프로세스 목록은 프로세스 대화 상자를 열 때 자동으로 표시됩니다.대화 상자가 열려 있는 동안 백그라운드에서 프로세스를 시작하고 중지할 수 있습니다.그러나 내용이 현재 상태가 아닐 수 있습니다.언제든지 새로 고침을 클릭하여 목록을 새로 고치고 현재 프로세스 목록을 확인할 수 있습니다.
디버깅하는 동안 여러 프로그램에 연결할 수 있지만 언제든지 디버거에서 활성화되는 프로그램은 한 개뿐입니다.디버그 위치 도구 모음이나 프로세스 창에서 활성 프로그램을 설정할 수 있습니다.
[!참고]
디버거에서 C++/CLI로 작성된 관리 코드에 연결하려면 코드에서 DebuggableAttribute를 내보내야 합니다.이 특성은 /ASSEMBLYDEBUG 링커 옵션으로 링크하여 자동으로 코드에 추가할 수 있습니다.
신뢰할 수 없는 사용자 계정에서 소유한 프로세스에 연결하면 보안 경고 확인 대화 상자가 나타납니다.자세한 내용은 보안 경고: 신뢰할 수 없는 사용자가 소유한 프로세스에 연결하면 위험할 수 있습니다. 아래의 정보가 의심스럽거나 잘 모르겠으면 이 프로세스에 연결하지 마십시오.를 참조하십시오.
원격 데스크톱(터미널 서비스) 세션에서 디버깅할 때 사용 가능한 프로세스 목록에 사용 가능한 프로세스 중 일부가 표시되지 않는 경우가 있습니다.Windows Server 2003 이상 버전에서, 제한된 사용자 계정을 보유한 사용자로 Visual Studio를 실행하는 경우 서비스 및 w3wp.exe를 비롯한 기타 서버 프로세스에 사용되는 세션 0에서 실행되는 프로세스는 사용 가능한 프로세스 목록에 표시되지 않습니다.관리자 계정으로 Visual Studio를 실행하거나 터미널 서비스 세션이 아닌 서버 콘솔에서 Visual Studio를 실행하여 이 문제를 해결할 수 있습니다.이러한 해결 방법을 둘 다 사용할 수 없는 경우 세 번째 방법으로 Windows 명령줄에서 vsjitdebugger.exe -p ProcessId를 실행하여 프로세스에 연결합니다.프로세스 ID는 tlist.exe를 사용하여 확인할 수 있습니다.tlist.exe를 가져오려면 https://go.microsoft.com/fwlink/?LinkId=168279에서 Windows용 디버깅 도구를 다운로드하여 설치합니다.
연결된 프로세스의 디버깅을 중지하려면 디버그/디버깅 중지를 클릭하거나 연결된 프로세스 실행을 중지합니다.
원격 컴퓨터의 프로세스에 연결
프로세스에 연결 대화 상자를 사용할 때 원격 디버깅용으로 설정된 다른 컴퓨터를 선택할 수 있습니다.자세한 내용은 장치에서 원격 도구 설정을 참조하십시오.원격 컴퓨터를 선택하면 해당 컴퓨터에서 실행되는 사용 가능한 프로세스의 목록을 볼 수 있고 디버깅을 위해 하나 이상의 프로세스에 연결할 수 있습니다.
원격 컴퓨터를 선택하려면
프로세스에 연결 대화 상자의 전송 목록에서 적합한 연결 형식을 선택합니다.대부분의 경우에는 기본값이 올바른 설정입니다.
한정자 목록 상자를 사용하여 다음 방법 중 하나로 원격 컴퓨터 이름을 선택합니다.
한정자 목록 상자에 이름을 입력합니다.
한정자 목록 상자 옆에 있는 드롭다운 화살표를 클릭하고 드롭다운 목록에서 컴퓨터 이름을 선택합니다.
한정자 목록 옆에 있는 찾기 단추를 클릭하여 원격 디버거 연결 선택 대화 상자를 엽니다.원격 디버거 연결 선택 대화 상자에는 로컬 서브넷에 있는 모든 장치와 이더넷 케이블을 통해 컴퓨터에 직접 연결된 모든 장치가 나열됩니다.원하는 컴퓨터 또는 장치를 클릭한 다음 선택을 클릭합니다.
전송 설정은 디버깅 세션에 상관없이 유지됩니다.한정자 설정은 해당 한정자를 사용하여 디버깅 연결에 성공한 경우에만 디버깅 세션 간에 유지됩니다.
연결 오류 문제 해결
디버거에서 실행 중인 프로세스에 연결할 때 이 프로세스에는 한 가지 이상의 코드 형식이 포함될 수 있습니다.디버거가 연결될 수 있는 코드 형식이 코드 형식 선택 대화 상자에서 표시되고 선택됩니다.
[!참고]
디버거에서 C++로 작성된 관리 코드에 연결하려면 코드에서 DebuggableAttribute를 내보내야 합니다.이 특성은 /ASSEMBLYDEBUG 링커 옵션으로 링크하여 자동으로 코드에 추가할 수 있습니다.
주의 |
---|
JavaScript로 작성된 Windows 스토어 응용 프로그램에 연결하려면 먼저 응용 프로그램을 디버깅할 수 있도록 설정해야 합니다.Windows 개발자 센터에서 Attach the debugger을 참조하십시오. |
때로는 디버거가 한 코드 형식에는 연결되고 다른 코드 형식에는 연결되지 않을 수도 있습니다.이러한 문제는 원격 컴퓨터에서 실행 중인 프로세스에 연결하려 할 때 발생할 수 있습니다.원격 컴퓨터에 설치된 원격 디버깅 구성 요소가 일부 코드 형식만 지원하고 다른 코드 형식은 지원하지 않을 수도 있습니다.데이터베이스를 직접 디버깅하기 위해 두 개 이상의 프로세스에 연결하려는 경우에도 이 문제가 발생할 수 있습니다.SQL 디버깅은 단일 프로세스에 대한 연결만 지원합니다.
디버거를 일부 코드 형식에 연결할 수 있지만 모든 코드 형식에 연결할 수는 없는 경우 연결할 수 없는 형식을 알려 주는 메시지가 나타납니다.
적어도 하나의 코드 형식에 디버거가 성공적으로 연결되면 프로세스 디버깅을 진행할 수 있습니다.이 경우 성공적으로 연결된 코드 형식만 디버깅할 수 있습니다.위 예제 메시지에서는 스크립트 코드 형식에 연결하지 못했음을 보여 줍니다.따라서 이 프로세스 내의 스크립트 코드는 디버깅할 수 없습니다.스크립트 코드는 프로세스 내에서 계속 실행되지만 스크립트에서 중단점을 설정하거나 데이터를 보거나 기타 디버깅 작업을 수행할 수는 없습니다.
디버거가 연결되지 않는 특정 코드 형식에만 다시 연결을 시도하면 해당 코드 형식에 디버거가 연결되지 않는 이유를 더 구체적으로 확인할 수 있습니다.
코드 형식에 연결하지 못한 이유에 대한 자세한 정보를 얻으려면
프로세스에서 분리합니다.디버그 메뉴에서 모두 분리를 클릭합니다.
프로세스에 다시 연결하여 한 코드 형식만 선택합니다.
프로세스에 연결 대화 상자의 사용 가능한 프로세스 목록에서 프로세스를 선택합니다.
선택을 클릭합니다.
코드 형식 선택 대화 상자에서 다음 코드 형식 디버깅을 선택하고 연결에 실패한 코드 형식을 선택합니다.다른 코드는 모두 선택 해제합니다.
확인을 클릭합니다.코드 형식 선택 대화 상자가 닫힙니다.
프로세스에 연결 대화 상자에서 연결을 클릭합니다.
이렇게 하면 연결이 완전히 실패하고 자세한 오류 메시지가 나타납니다.
참고 항목
개념
Visual Studio에서 하나 이상의 프로세스 디버깅
Visual Studio에서 Just-In-Time 디버깅