다중 프로세스 디버깅Multi-Process Debugging

Mac용 Visual Studio에서 개발된 최신 솔루션에는 다양한 플랫폼을 대상으로 하는 여러 프로젝트가 있는 것이 매우 일반적입니다.It is very common for modern solutions developed in Visual Studio for Mac to have multiple projects that target different platforms. 예를 들어 솔루션에는 웹 서비스 프로젝트에서 제공하는 데이터에 의존하는 모바일 애플리케이션 프로젝트가 있을 수 있습니다.For example, a solution might have a mobile application project that relies on the data provided by a web service project. 개발자는 이 솔루션을 개발하는 동안 오류를 해결하기 위해 두 프로젝트가 동시에 실행되도록 해야 할 수도 있습니다.While developing this solution, a developer might need to have both projects running concurrently to troubleshoot errors. Xamarin의 Cycle 9 릴리스를 시작으로 이제는 Mac용 Visual Studio가 동시에 실행 중인 여러 프로세스를 디버깅하는 것이 가능합니다.Beginning in the Cycle 9 release of Xamarin, it is now possible for Visual Studio for Mac to debug multiple processes that are running at the same time. 따라서 실행 중인 둘 이상의 프로젝트에서 중단점을 설정하고, 변수를 검사하고, 스레드를 보는 것이 가능해졌습니다.This makes it possible to set breakpoints, to inspect variables, and to view threads in more than one running project. 이것을 _다중 프로세스 디버깅_이라고 합니다.This is known as multiple process debugging.

이 가이드에서는 여러 프로세스 디버깅, 여러 프로세스를 디버깅하도록 솔루션을 구성하는 방법, Mac용 Visual Studio로 기존 프로세스에 결합하는 방법을 지원하기 위해 Mac용 Visual Studio에 이뤄진 일부 변경 사항을 다룹니다.This guide will discuss some of the changes made to Visual Studio for Mac to support debugging multiple processes, how to configure solutions to debug multiple processes, and how to attach to existing processes with Visual Studio for Mac.

요구 사항Requirements

여러 프로세스를 디버깅하려면 Mac용 Visual Studio가 필요합니다.Debugging multiple processes requires Visual Studio for Mac.

IDE 변경 내용IDE Changes

개발자가 다중 프로세스를 디버깅하는 데 도움이 되도록 Mac용 Visual Studio의 사용자 인터페이스에 몇가지 변경이 이뤄졌습니다.To help developers with multi-process debugging, Visual Studio for Mac has undergone some changes to its user interface. Mac용 Visual Studio에 업데이트된 디버그 도구 모음이 있으며, 솔루션 옵션 폴더에 새 솔루션 구성 섹션이 있습니다.Visual Studio for Mac has an updated Debug toolbar, and a new Solutions Configuration section in the Solution Options folder. 또한 스레드 패드는 이제 실행 중인 프로세스와 각 프로세스에 대한 스레드를 표시합니다.In addition, the Threads Pad will now display running processes and the threads for each process. Mac용 visual Studio는 또한 애플리케이션 출력과 같은 특정한 것에 대해 각 프로세스에 하나씩 여러 디버그 패드를 표시합니다.Visual Studio for Mac will also display multiple debug pads, one for each process, for certain things like Application Output.

솔루션 구성Solution Configurations

기본적으로 Mac용 Visual Studio는 디버그 도구 모음의 솔루션 구성 영역에 개별 프로젝트를 표시합니다.By default, Visual Studio for Mac will display an individual project in the Solution Configuration area of the debug toolbar. 디버깅 세션이 시작될 때 이것은 Mac용 Visual Studio가 디버거를 시작하고 연결할 프로젝트입니다.When a debugging session is initiated, this is the project that Visual Studio for Mac will start and attach the debugger to.

Mac용 Visual Studio에서 여러 프로세스를 시작하고 디버깅하려면 _솔루션 구성_을 만드는 것이 필요합니다.To start and debug multiple processes in Visual Studio for Mac, it is necessary to create a solution configuration. 솔루션 구성은 시작 단추를 클릭하거나 ⌘↩(Cmd-Enter)을 눌러 디버깅 세션을 시작할 때 솔루션에 어떤 프로젝트가 포함되어야 하는지 설명합니다.A solution configuration describes what projects in a solution should be included when a debugging session is initiated with a click of the Start button or when ⌘↩ (Cmd-Enter) is pressed. 다음 스크린샷은 Mac용 Visual Studio에 있는 여러 솔루션 구성을 가진 솔루션의 예시입니다.The following screenshot is an example of a solution in Visual Studio for Mac that has multiple solution configurations:

디버그 도구 모음의 부분Parts of the Debug Toolbar

디버그 도구 모음은 팝업 메뉴를 통해 솔루션 구성을 선택할 수 있도록 변경되었습니다.The debug toolbar has changed to allow a solution configuration to be selected via a popup menu. 이 스크린샷은 디버그 도구 모음의 부분을 보여줍니다.This screenshot shows the parts of the Debug toolbar:

  1. 솔루션 구성 - 디버그 도구 모음에서 솔루션 구성을 클릭하고 팝업 메뉴에서 해당 구성을 선택하여 솔루션 구성을 설정할 수 있습니다.Solution Configuration - It is possible to set the solution configuration by clicking on the Solution configuration in the debug toolbar and selecting the configuration from the popup menu:

  2. 빌드 대상 - 프로젝트에 대한 빌드 대상을 식별합니다.Build Target - This identifies the build target for the projects. Mac용 Visual Studio의 이전 버전에서 변경되지 않습니다.This is unchanged from previous versions of Visual Studio for Mac.

  3. 디바이스 대상 - 솔루션이 실행될 디바이스를 선택합니다.Device Targets - This selects the devices that the solution will be run on. 각 프로젝트에 대한 별도 디바이스 또는 에뮬레이터를 식별할 수 있습니다.It is possible to identify a separate device or emulator for each project.:

여러 디버그 패드Multiple Debug Pads

다중 솔루션 구성을 시작할 때 Mac용 Visual Studio 패드 일부가 각 프로세스에 대해 한 번씩 여러번 나타납니다.When the multi-solution configuration is started, some of the Visual Studio for Mac pads will appear multiple times, one for each process. 예를 들어 다음 스크린샷은 두 개의 프로젝트를 실행하는 솔루션에 대해 두 애플리케이션 출력 패드를 보여줍니다.For example, the following screenshot shows two Application Output pads for a solution that is running two projects:

여러 프로세스와 활성 스레드Multiple Processes and the Active Thread

하나의 프로세스에서 중단점을 만나면 그 프로세스는 실행을 일시 중지하고 다른 프로세스는 계속 실행됩니다.When a breakpoint is encountered in one process, that process will pause execution, while the other processes continue running. 단일 프로세스 시나리오에서 Mac용 Visual Studio는 단일 패드 집합에 있는 스레드, 지역 변수, 애플리케이션 출력 등의 정보를 쉽게 표시할 수 있습니다.In a single process scenario, Visual Studio for Mac can easily display information such as threads, local variables, application output in a single set of pads. 그러나, 여러 중단점과 잠재적으로 여러 스레드를 사용하는 여러 프로세스가 있을 경우 모든 스레드(와 프로세스)로부터 오는 모든 정보를 한꺼번에 표시하고자 하는 디버깅 세션의 정보는 개발자가 감당하기에 너무나 엄청나다는 것이 판명될 수 있습니다.However, when there are multiple processes with multiple breakpoints, and potentially multiple threads, it can prove overwhelming to the developer to cope with the information from a debugging session that is trying to display all information from all threads (and processes) at once.

이 문제를 다루기 위해 Mac용 Visual Studio는 한 번에 한 스레드의 정보만 표시합니다. 이것을 _활성 스레드_라고 합니다.To address this problem, Visual Studio for Mac will only display the information from one thread at a time, this is known as the active thread. 중단점에서 일시 중지하는 첫 번째 스레드는 _활성 스레드_로 간주됩니다.The first thread that pauses at a breakpoint is considered the active thread. 활성 스레드는 개발자가 중점적으로 주의를 기울이는 스레드입니다.The active thread is the thread that is the focus of the developer's attention. 스텝오버⌘↩O(Shift-Cmd-O)와 같은 디버깅 명령이 활성 스레드에 내려집니다.Debug commands, such as Step Over ⇧⌘O (Shift-Cmd-O), will be issued to the active thread.

스레드 패드는 솔루션 구성에서 검사 중인 모든 프로세스 및 스레드에 대한 정보를 표시하고 어떤 것이 활성 스레드인지에 관한 시각 신호를 제공합니다.The Thread Pad will display information for all the processes and threads that are under inspection in the solution configuration and provide visual cues as to what the active thread is:

스레드는 호스팅하는 프로세스에 의해 그룹화됩니다.The threads are grouped by the process that is hosting them. 활성 스레드의 프로젝트 이름 및 ID는 굵은 텍스트로 표시되고, 오른쪽을 가리키는 화살표는 활성 스레드 옆에 있는 여백에 나타납니다.The project name and ID of the active thread will be displayed in bold text, and an arrow pointing to the right will appear in the gutter next to the active thread. 이전 스크린 샷에서 프로세스 Id 48703(FirstProject)의 스레드 #1은 활성 스레드입니다.In the previous screenshot, thread #1 in process Id 48703 (FirstProject) is the active thread.

여러 프로세스를 디버깅할 때 스레드 패드를 사용하여 활성 스레드가 그 프로세스(또는 스레드)에 대한 디버깅 정보를 참조하도록 전환할 수 있습니다.When debugging multiple processes, it is possible to switch the active thread to see debug information for that process (or thread) by using the Thread Pad. 활성 스레드를 전환하려면 스레드 패드에서 원하는 스레드를 선택한 다음, 두 번 클릭합니다.To switch the active thread, select the desired thread in the Thread Pad and then double click on it.

여러 프로젝트가 중지될 때 단계별 진행 코드Stepping through Code When Multiple Projects Are Stopped

두 개 이상의 프로젝트에 중단점이 있을 경우 Mac용 Visual Studio는 두 프로세스를 일시 중지합니다.When two (or more) projects have break points, Visual Studio for Mac will pause both processes. 그렇게 하는 것은 활성 스레드에 있는 스텝오버 코드에만 가능합니다.It is only possible to Step Over code in the active thread. 다른 프로세스는 범위 변경이 디버거가 활성 스레드에서 포커스를 전환할 수 있도록 할 때까지 일시 중지됩니다.The other process will be paused until a scope change makes it possible for the debugger to switch focus from the active thread. 예를 들어, 두 개의 프로젝트를 디버깅하는 Mac용 Visual Studio의 다음 스크린샷을 살펴보겠습니다.For example, consider the following screenshot of Visual Studio for Mac debugging two projects:

이 스크린샷을 보면 각 솔루션에 자체 중단점이 있습니다.In this screenshot, each solution has its own breakpoint. 디버깅이 시작될 때 만나게 될 첫 번째 중단점은 SecondProject에서 MainClass10줄에 있습니다.When debugging starts, the first breakpoint to be encountered is on line 10 of MainClass in SecondProject. 두 프로젝트 모두에 중단점이 있으므로 각 프로세스가 중지됩니다.Because both projects have breakpoints, each process is halted. 중단점에 도달하면 스텝오버를 호출할 때마다 Mac용 Visual Studio가 활성화 스레드에서 코드를 단계별로 실행합니다.Once the breakpoint is encountered, each invocation of the Step Over will cause Visual Studio for Mac to step over code in the active thread.

코드 단계별 진행은 활성 스레드에 국한되므로 다른 프로세스가 여전히 중지된 채로 있는 가운데 Mac용 Visual Studio는 코드를 한 번에 한 줄씩 실행해 나갑니다.Stepping through the code is limited to the active thread, so Visual Studio for Mac will step through, code line at a time, while the other process is still paused.

이전 스크린샷을 예로 들자면 for 루프가 완료될 때 Mac용 Visual Studio는 MainClass에서 11줄의 중단점을 만날 때까지 FirstProject가 실행되게 합니다.Using the previous screenshot as an example, when the for loop finished, Visual Studio for Mac would allow FirstProject to run until the breakpoint at line 11 in MainClass was encountered. 스텝오버 명령에 대해, 디버거는 Mac용 Visual Studio의 내부 발견적 알고리즘이 활성 스레드를 SecondProject로 전환할 때까지 FirstProject에서 한 줄씩 실행해 나갑니다.For each Step Over command, the debugger would advance line by line in FirstProject, until the internal heuristic algorithms of Visual Studio for Mac switch the active thread back to SecondProject.

프로젝트 중 하나에만 중단점이 설정된 경우 그 프로세스만 일시 중지합니다.If only one of the projects had a break point set, then only that process would be paused. 다른 프로젝트는 개발자가 일시 중지하거나 중단점이 추가될 때까지 계속 실행됩니다.The other project would continue to run until paused by the developer or a breakpoint was added.

프로세스 일시 중지 및 다시 시작Pausing and Resuming a Processes

프로세스를 마우스 오른쪽 단추로 클릭한 후 상황에 맞는 메뉴에서 일시 중지 또는 다시 시작을 선택하여 프로세스를 일시 중지하거나 계속할 수 있습니다.It is possible to pause or resume a process by right-clicking on the process and selecting Pause or Resume from the context menu:

디버그 도구 모음의 모양은 디버깅 중인 프로젝트의 상태에 따라 변경됩니다.The appearance of the debug toolbar will change depending on the state of the projects that are being debugged. 여러 프로젝트가 실행 중이라면, 디버그 도구 모음은 적어도 하나의 프로젝트가 실행 중이고 하나의 프로젝트가 일시 중지된 경우 일시 중지다시 시작 단추를 모두 표시합니다.When multiple projects are running, the debug toolbar will display both the Pause and Resume button where there is at least one project running and one project paused:

디버그 도구 모음에서 일시 중지 단추를 클릭하면 디버깅 중인 모든 프로세스가 일시 중지하고 다시 시작 단추를 클릭하면 모든 일시 중지 된 프로세스가 다시 시작됩니다.Clicking the Pause button in the Debug toolbar will pause all processes that are being debugged, while clicking the Resume buttons will resume all paused processes.

두 번째 프로젝트 디버깅Debugging a Second Project

Mac용 Visual Studio가 첫 번째 프로젝트를 시작하고 나면 두 번째 프로젝트를 디버깅할 수 있습니다.It is also possible to debug a second project once the first project is started by Visual Studio for Mac. 첫 번째 프로젝트가 시작되면 솔루션 패드에서 프로젝트를 *마우스 오른쪽 단추로 클릭한 다음, 디버깅 항목 시작을 클릭합니다.Once the first project is started, *Right Click on the project in the Solution Pad and select Start Debugging Item:

솔루션 구성 만들기Creating a Solution Configuration

_솔루션 구성_은 시작 단추로 디버깅 세션을 시작할 때 Mac용 Visual Studio에 어떤 프로젝트를 실행할지 지시합니다.A solution configuration tells Visual Studio for Mac what project to run when a debugging session is initiated with the Start button. 솔루션 당 둘 이상의 솔루션 구성이 있을 수 있습니다.There can be more than one solution configuration per solution. 따라서 프로젝트를 디버깅할 때 어떤 프로젝트가 실행되도록 할지 지정할 수 있습니다.This makes it possible to specify what projects are run when debugging the project.

Xamaring Studio에서 새 솔루션 구성을 만들려면To create a new solution configuration in Xamaring Studio:

  1. Mac용 Visual Studio에서 솔루션 옵션 대화 상자를 열고 실행 > 구성을 선택합니다.Open the Solution Options dialog in Visual Studio for Mac, and select Run > Configurations:

  2. 새로 단추를 클릭하고, 새 솔루션 구성의 이름을 입력한 후, 만들기를 클릭합니다.Click on the New button, and enter the name of the new solution configuration, and click Create. 새 솔루션 구성이 구성 창에 나타납니다.The new solution configuration will appear in the Configurations window:

  3. 구성 목록에서 새 실행 구성을 선택합니다.Select the new run configuration in the configurations list. 솔루션 옵션 대화 상자는 솔루션에 있는 프로젝트를 표시합니다.The Solution Options dialog will display each project in the solution. 디버깅 세션을 시작할 때 시작되어야 하는 각 프로젝트를 확인합니다.Check off each project that should be started when a debugging session is initiated:

이제 MultipleProjects 솔루션 구성이 디버그 도구 모음에 나타나 개발자가 두 개의 프로젝트를 동시에 디버깅할 수 있게 합니다.The MultipleProjects solution configuration will now appear in the Debug toolbar, making it possible for a developer to simultaneously debug the two projects.

요약Summary

이 가이드는 Mac용 Visual Studio에서 여러 프로세스를 디버깅하는 것에 관해 설명합니다.This guide discussed debugging multiple process in Visual Studio for Mac. 다중 프로세스 디버깅을 지원하기 위해 IDE에 가해진 몇 가지 변경 내용을 다루고 몇 가지 관련된 동작을 설명합니다.It covered some of the changes to the IDE to support multi-process debugging and described some of the associated behaviour.