Visual Studio는 여러 프로세스가 있는 솔루션을 디버그할 수 있습니다. 프로세스를 시작하고 전환하며, 소스 코드를 중단, 계속, 단계별로 실행하며, 디버깅을 중지하고 개별 프로세스를 종료하거나 분리할 수 있습니다.
여러 프로세스로 디버깅 시작
Visual Studio 솔루션에서 둘 이상의 프로젝트를 독립적으로 실행할 수 있는 경우 디버거가 시작되는 프로젝트를 선택할 수 있습니다. 현재 시작 프로젝트는 솔루션 탐색기에서 굵게 표시됩니다.
시작 프로젝트를 변경하려면 솔루션 탐색기에서 다른 프로젝트를 마우스 오른쪽 단추 로 클릭하고 시작 프로젝트로 설정을 선택합니다.
시작 프로젝트를 만들지 않고 솔루션 탐색기에서 프로젝트 디버깅을 시작하려면 프로젝트를 마우스 오른쪽 단추로 클릭하고 새 인스턴스 디버그>시작 또는 새 인스턴스로 한 단계씩 실행합니다.
솔루션 속성에서 시작 프로젝트 또는 여러 프로젝트를 설정하려면 다음을 수행합니다.
솔루션 탐색기에서 솔루션을 선택한 다음 도구 모음에서 속성 아이콘을 선택하거나 솔루션을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.
속성 페이지에서 Common Properties>시작 프로젝트를 선택합니다.
현재 선택 영역, 단일 시작 프로젝트 및 프로젝트 파일 또는 여러 시작 프로젝트를 선택합니다.
여러 시작 프로젝트를 선택하는 경우 각 프로젝트에 대해 수행할 시작 순서 및 작업(시작, 디버깅 없이 시작 또는 없음)을 변경할 수 있습니다.
적용을 선택하거나 확인을 선택하여 대화 상자를 적용하고 닫습니다.
프로세스에 연결
디버거는 원격 디바이스를 포함하여 Visual Studio 외부의 프로세스에서 실행되는 앱에 연결할 수도 있습니다. 앱에 연결한 후 Visual Studio 디버거를 사용할 수 있습니다. 디버깅 기능이 제한될 수 있습니다. 앱이 디버그 정보를 사용하여 빌드되었는지 여부, 앱의 소스 코드에 대한 액세스 권한이 있는지 여부 및 JIT 컴파일러가 디버그 정보를 추적하고 있는지 여부에 따라 달라집니다.
자세한 내용은 실행 중인 프로세스에 연결을 참조하세요.
실행 중인 프로세스에 연결하려면 다음을 수행합니다.
앱이 실행 중인 상태에서프로세스에 대한> 연결을 선택합니다.
프로세스에 연결 대화 상자의 사용 가능한 프로세스 목록에서 프로세스를 선택한 다음 연결을 선택합니다.
비고
하위 프로젝트가 동일한 솔루션에 있더라도 디버거는 디버깅 중인 프로세스에서 시작된 자식 프로세스에 자동으로 연결되지 않습니다. 자식 프로세스를 디버그하려면 자식 프로세스가 시작된 후 자식 프로세스에 연결하거나 새 디버거 인스턴스에서 자식 프로세스를 시작하도록 Windows 레지스트리 편집기를 구성합니다.
레지스트리 편집기를 사용하여 디버거에서 자동으로 프로세스 시작
경우에 따라 다른 프로세스에서 시작하는 앱에 대한 시작 코드를 디버그해야 할 수 있습니다. 예를 들어 서비스 및 사용자 지정 설정 작업이 있습니다. 디버거를 시작하고 앱에 자동으로 연결할 수 있습니다.
regedit.exe실행하여 Windows 레지스트리 편집기를 시작합니다.
레지스트리 편집기에서 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options이동합니다.
디버거에서 시작하려는 앱의 폴더를 선택합니다.
앱이 자식 폴더로 나열되지 않은 경우 이미지 파일 실행 옵션을 마우스 오른쪽 단추로 클릭하고 새>키를 선택하고 앱 이름을 입력합니다. 또는 트리에서 새 키를 마우스 오른쪽 단추로 클릭하고 이름 바꾸기를 선택한 다음 앱 이름을 입력합니다.
트리에서 새 키를 마우스 오른쪽 단추로 클릭하고 새>문자열 값을 선택합니다.
새 값의 이름을 새 값 #1
debugger에서 .로 변경합니다.디버거를 마우스 오른쪽 단추로 클릭하고 수정을 선택합니다.
문자열 편집 대화 상자에서
vsjitdebugger.exe상자를 입력 한 다음 확인을 선택합니다.
여러 프로세스로 디버그
여러 프로세스로 앱을 디버깅할 때 중단, 단계별 실행 및 계속되는 디버거 명령은 기본적으로 모든 프로세스에 영향을 줍니다. 예를 들어 중단점에서 프로세스가 일시 중단되면 다른 모든 프로세스의 실행도 일시 중단됩니다. 이 기본 동작을 변경하여 실행 명령의 대상을 더 자세히 제어할 수 있습니다.
한 프로세스가 중단될 때 모든 프로세스가 일시 중단되는지 여부를 변경하려면 다음을 수행합니다.
- 도구(또는 디버그) >옵션 창에서 모든 설정>디버깅> 섹션을 확장합니다.
- 도구(또는 디버그) >옵션 대화 상자에서 디버깅> 섹션을 확장합니다.
- 한 프로세스가 중단되는 경우 모든 프로세스 중단 옵션 확인란을 선택하거나 선택을 취소합니다.
중단, 스텝, 계속 명령
다음 표에서는 한 프로세스 중단 확인란을 선택하거나 선택 취소할 때 모든 프로세스를 중단 하는 경우의 디버깅 명령 동작에 대해 설명합니다.
| Command | 선택됨 | 선택 취소됨 |
|---|---|---|
| 디버그>모두 중단 | 모든 프로세스가 중단되었습니다. | 모든 프로세스가 중단되었습니다. |
| 디버그>계속하다 | 모든 프로세스가 다시 시작됩니다. | 일시 중단된 모든 프로세스가 다시 시작됩니다. |
| 디버그>한 단계씩 실행, 한 단계 넘기기 또는 한 단계 빠져나가기 | 모든 프로세스는 현재 프로세스 단계 동안 실행됩니다. 그런 다음 모든 프로세스가 중단되었습니다. |
현재 프로세스 단계입니다. 일시 중단된 프로세스가 다시 시작됩니다. 실행 중인 프로세스는 계속됩니다. |
| 디버그>현재 프로세스로 진입하거나, 현재 프로세스를 넘어감하거나, 현재 프로세스를 종료합니다. | N/A | 현재 프로세스 단계입니다. 다른 프로세스는 기존 상태(일시 중단 또는 실행)를 유지합니다. |
| 원본 창 중단점 | 모든 프로세스가 중단되었습니다. | 원본 창 프로세스만 중단됩니다. |
| 소스 창 커서까지 실행 원본 창은 현재 프로세스에 있어야 합니다. |
원본 창 프로세스가 커서로 실행되는 동안 모든 프로세스가 실행된 다음 중단됩니다. 그런 다음 다른 모든 프로세스가 중단되었습니다. |
원본 창 프로세스가 커서로 실행됩니다. 다른 프로세스는 기존 상태(일시 중단 또는 실행)를 유지합니다. |
| 프로세스 창 >중단 프로세스 | N/A | 선택한 프로세스 중단. 다른 프로세스는 기존 상태(일시 중단 또는 실행)를 유지합니다. |
| 프로세스 창 >계속 프로세스 | N/A | 선택한 프로세스가 다시 시작됩니다. 다른 프로세스는 기존 상태(일시 중단 또는 실행)를 유지합니다. |
원본 및 기호(.pdb) 파일 찾기
프로세스의 소스 코드를 탐색하려면 디버거가 원본 파일 및 기호 파일에 액세스해야 합니다. 자세한 내용은 기호(.pdb) 및 원본 파일 지정을 참조하세요.
프로세스에 대한 파일에 액세스할 수 없는 경우 디스어셈블리 창을 사용하여 탐색할 수 있습니다. 자세한 내용은 방법: 디스어셈블리 창 사용을 참조하세요.
프로세스 간 전환
디버깅할 때 여러 프로세스에 연결할 수 있지만 지정된 시간에 디버거에서 하나의 프로세스만 활성화됩니다. 디버그 위치 도구 모음 또는 프로세스 창에서 활성 또는 현재 프로세스를 설정할 수 있습니다. 프로세스 간에 전환하려면 두 프로세스가 모두 중단 모드여야 합니다.
디버그 위치 도구 모음에서 현재 프로세스를 설정하려면 다음을 수행합니다.
디버그 위치 도구 모음을 열려면도구 모음>디버그 위치> 선택합니다.
디버깅하는 동안 디버그 위치 도구 모음에서 프로세스 드롭다운에서 현재 프로세스로 설정할 프로세스를 선택합니다.
프로세스 창에서 현재 프로세스를 설정하려면 다음을 수행합니다.
<원본 문서 구조에 맞춰> 디버깅할 때,
디버그 Windows 프로세스 를 선택하여프로세스 창을 엽니다.프로세스 창에서 현재 프로세스는 노란색 화살표로 표시됩니다. 현재 프로세스로 설정하려는 프로세스를 두 번 클릭합니다.
프로세스로 전환하면 디버깅을 위한 현재 프로세스로 설정됩니다. 디버거 창에는 현재 프로세스의 상태가 표시되고 단계별 실행 명령은 현재 프로세스에만 영향을 줍니다.
여러 프로세스로 디버깅 중지
기본적으로 디버그>디버깅 중지를 선택하면 디버거가 모든 프로세스에서 종료되거나 분리됩니다.
현재 프로세스가 디버거에서 시작된 경우 프로세스가 종료됩니다.
디버거를 현재 프로세스에 연결하면 디버거가 프로세스에서 분리되고 프로세스가 실행 상태로 남습니다.
Visual Studio 솔루션에서 프로세스 디버깅을 시작한 다음 이미 실행 중인 다른 프로세스에 연결한 다음 디버깅 중지를 선택하면 디버깅 세션이 종료됩니다. Visual Studio에서 시작된 프로세스는 종료되고 연결한 프로세스는 계속 실행됩니다.
디버깅 중지가 개별 프로세스에 영향을 주는 방식을 제어하려면 프로세스 창에서 프로세스를 마우스 오른쪽 단추로 클릭한 다음 디버깅이 중지될 때 분리 확인란을 선택하거나 선택 취소합니다.
비고
한 프로세스가 중단될 때 모든 프로세스를 중단하는 디버거 옵션은 프로세스의 중지, 종료 또는 분리에 영향을 미치지 않습니다.
명령 중지, 종료 및 분리
다음 표에서는 여러 프로세스를 사용하여 디버거 중지, 종료 및 분리 명령의 동작을 설명합니다.
| Command | 설명 |
|---|---|
| 디버그>디버깅 중지 | 프로세스 창에서 동작이 변경되지 않는 한 디버거에서 시작한 프로세스가 종료되고 연결된 프로세스가 분리됩니다. |
| 디버그>모두 종료 | 모든 프로세스가 종료됩니다. |
| 디버그>모두 분리 | 디버거는 모든 프로세스에서 분리됩니다. |
| 프로세스 창 >분리 프로세스 | 디버거는 선택한 프로세스에서 분리됩니다. 다른 프로세스는 기존 상태(일시 중단 또는 실행)를 유지합니다. |
| 프로세스 창 >종료 프로세스 | 선택한 프로세스가 종료되었습니다. 다른 프로세스는 기존 상태(일시 중단 또는 실행)를 유지합니다. |
| 디버깅이 중지되면> 창 분리 | 이 옵션을 선택하면 디버그>중지 디버깅이 선택한 프로세스에서 분리됩니다. 선택하지 않으면 디버그>중지 디버깅이 선택한 프로세스를 종료합니다. |