Mac용 Visual Studio를 사용하여 디버깅Debugging with Visual Studio for Mac

Mac용 Visual Studio에는 .NET Core, .NET Framework, Unity 및 Xamarin 애플리케이션을 지원하는 디버거가 있습니다.Visual Studio for Mac has debuggers with support for .NET Core, .NET Framework, Unity, and Xamarin applications.

Mac용 Visual Studio에서는 Mono 소프트 디버거를 사용합니다. 이 디버거는 Mono 런타임에 구현되어, Mac용 Visual Studio에서 모든 플랫폼의 관리 코드를 디버그할 수 있게 해줍니다.Visual Studio for Mac uses the Mono Soft Debugger, which is implemented into the Mono runtime, allowing Visual Studio for Mac to debug managed code across all platforms.

디버거The Debugger

Mac용 Visual Studio에서는 Mono 소프트 디버거를 사용하여 모든 Xamarin 애플리케이션의 관리(C# 또는 F#) 코드를 디버그합니다.Visual Studio for Mac uses the Mono Soft Debugger to debug managed (C# or F#) code in all Xamarin applications. Mono Soft 디버거는 Mono 런타임에 기본 제공되는 협조적 디버거란 점에서 기본 디버거와 다릅니다. 생성된 코드와 Mono 런타임이 IDE와 함께 작동하여 디버깅 경험을 제공합니다.The Mono Soft debugger is different from regular debuggers in that it is a cooperative debugger that is built into the Mono runtime; the generated code and Mono runtime cooperate with the IDE to provide a debugging experience. Mono 런타임은 유선 프로토콜을 통해 디버깅 기능을 공개합니다. 자세한 내용은 Mono 설명서를 참조하세요.The Mono runtime exposes the debugging functionality through a wire protocol, which you can read more about in the Mono documentation.

LLDB 또는 GDB와 같은 하드 디버거는 디버그된 프로그램의 정보나 협조 없이 프로그램을 제어하지만, 네이티브 iOS 또는 Android 코드를 디버그해야 하는 경우 Xamarin 애플리케이션을 디버그할 때 유용할 수 있습니다.Hard debuggers, such as LLDB or GDB, control a program without the knowledge or cooperation from the debugged program, but can still be useful when debugging Xamarin applications in the event that you need to debug native iOS or Android code.

.NET Core 및 ASP.NET Core 애플리케이션의 경우 Mac용 Visual Studio에서 .NET Core 디버거를 사용합니다.For .NET Core and ASP.NET Core applications, Visual Studio for Mac uses the .NET Core debugger. 이 디버거도 협조적 디버거이며 .NET 런타임과 함께 작동합니다.This debugger is also a cooperative debugger and works with the .NET runtime.

디버거 사용Using the debugger

애플리케이션 디버그를 시작하려면 구성이 디버그 로 설정되어 있는지 확인해야 합니다.To start debugging any application, always ensure that the configuration is set to Debug. 디버그 구성은 중단점, 데이터 시각화 도우미 사용, 호출 스택 보기 등 디버깅을 지원하는 유용한 도구 집합을 제공합니다.The debug configuration provides a helpful set of tools to support debugging, such as breakpoints, using data visualizers, and viewing the call stack:

디버그 구성

중단점 설정Setting a breakpoint

IDE에서 중단점을 설정하려면 편집기의 여백 영역에서 중단하려는 코드의 줄 번호 옆을 클릭합니다.To set a breakpoint in your IDE, click on the margin area of your editor, next to the line number of the code where you wish to break:

여백에 중단점 설정

중단점 창 으로 이동하여 코드에 설정된 모든 중단점을 볼 수 있습니다.You can view all the breakpoints that have been set in your code by going to the Breakpoints Window:

중단점 목록

디버깅 시작Start debugging

디버깅을 시작하려면 대상 브라우저, 디바이스 또는 시뮬레이터/에뮬레이터를 선택합니다.To start debugging, select the target browser, device, or simulator/emulator:

디버그 구성 대상 디바이스 선택Debug configuration Select target device

그런 다음 재생 단추 또는 Cmd+return 을 눌러 애플리케이션을 배포합니다.Then deploy your application by pressing the Play button, or Cmd + return. 중단점을 적중하면 코드가 노란색으로 강조 표시됩니다.When you hit a breakpoint, the code will be highlighted yellow:

중단점이 적중되었음을 보여 주는 강조 표시

이 시점에서 개체 값을 검사하는 데 사용되는 도구 등의 디버깅 도구를 사용하여 코드에서 발생하는 상황에 대한 자세한 정보를 얻을 수 있습니다.Debugging tools, such as the one used to inspect the values of objects, can be used at this point to get more information about what is happening in your code:

디버그 시각화

조건부 중단점Conditional breakpoints

중단점이 발생해야 하는 상황을 지정하는 규칙을 설정할 수도 있습니다. 이를 조건부 중단점 추가라고 합니다.You can also set rules dictating the circumstances under which a breakpoint should occur, this is known as adding a conditional breakpoint. 조건부 중단점을 설정하려면 중단점 속성 창 에 액세스합니다. 다음 두 가지 방법으로 액세스할 수 있습니다.To set a conditional breakpoint, access the Breakpoint Properties window, which can be done in two ways:

  • 새 조건부 중단점을 추가하려면 편집기 여백에서 중단점을 설정하려는 코드의 줄 번호 왼쪽을 마우스 오른쪽 단추로 클릭하고 새 중단점을 선택합니다.To add a new conditional breakpoint, right-click on the editor margin, to the left of the line number for the code you wish to set a breakpoint on, and select New Breakpoint:

중단점 상황에 맞는 메뉴

  • 기존 중단점에 조건을 추가하려면 중단점을 마우스 오른쪽 단추로 클릭하고 중단점 속성 을 선택하거나 중단점 창 에서 아래 그림에 표시된 중단점 편집 단추를 선택합니다.To add a condition to an existing breakpoint, right-click on the breakpoint and select Breakpoint Properties, or, in the Breakpoints Window, select the Edit Breakpoint button illustrated below:

중단점 창에서 기존 중단점 편집

그런 다음 중단점이 발생할 조건을 입력할 수 있습니다.You can then enter the condition under which you want the breakpoint to occur:

중단점 조건 편집

단계별 코드 실행Stepping through code

중단점에 도달하면 디버그 도구를 사용하여 프로그램 실행을 제어할 수 있습니다.When a breakpoint has been reached, the Debug tools enable you to get control over the program's execution. Mac용 Visual Studio에서 코드를 실행하고 단계별로 실행할 수 있는 단추 4개를 표시합니다.Visual Studio for Mac will display four buttons, allowing you to run and step through the code. Mac용 Visual Studio에서는 다음과 같이 표시됩니다.In Visual Studio for Mac, they will look like the following:

코드를 단계별로 실행하는 단추

네 단추는 다음과 같습니다.Here are the four buttons:

  • 재생 - 다음 중단점까지 코드 실행을 시작합니다.Play - This will begin executing the code, until the next breakpoint.
  • 프로시저 단위 실행 - 다음 코드 줄을 실행합니다.Step Over - This will execute the next line of code. 다음 줄이 함수 호출인 경우 프로시저 단위 실행은 함수를 실행하고, 함수 의 다음 코드 줄에서 중지합니다.If the next line is a function call, Step Over will execute the function, and will stop at the next line of code after the function.
  • 한 단계씩 코드 실행 - 다음 코드 줄을 실행합니다.Step Into - This will also execute the next line of code. 다음 줄이 함수 호출인 경우 한 단계씩 코드 실행은 함수의 첫 번째 줄에서 중지되며, 함수 디버깅을 줄 단위로 계속할 수 있도록 합니다.If the next line is a function call, Step Into will stop at the first line of the function, allowing you to continue line-by-line debugging of the function. 다음 줄이 함수가 아닌 경우 프로시저 단위 실행과 동일하게 동작합니다.If the next line is not a function, it will behave the same as Step Over.
  • 프로시저 나가기 - 현재 함수가 호출된 줄로 돌아갑니다.Step Out - This will return to the line where the current function was called.

다음에 실행되는 문 변경Change which statement is executed next

디버거가 일시 중지된 동안 여백의 화살표는 다음에 실행될 코드 줄을 보여 줍니다.While the debugger is paused, an arrow in the margin shows which line of code will be executed next. 화살표를 클릭하고 다른 코드 줄로 끌어 실행될 문을 변경할 수 있습니다.You can click and drag the arrow to a different line of code to change which statement will be executed. 코드 줄을 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴에서 다음 문 설정 을 선택하여 같은 작업을 수행할 수 있습니다.You can achieve the same thing by also right-clicking on a line of code and selecting Set Next Statement from the context menu.

화살표를 끌어다 놓아 다음 문 설정

주의

현재 실행 줄을 변경하면 애플리케이션에서 예기치 않은 동작이 발생할 수 있습니다.Changing the current line of execution can cause unexpected behavior in an application. 일부 조건에서는 실행할 다음 문을 변경할 수 없을 수도 있습니다.There are also some conditions where changing the next statement to execute is not possible. 예를 들어 한 메서드에서 다른 메서드로 화살표 끌기가 작동하지 않습니다.For example, dragging the arrow from one method to another method will not work. 이와 같이 지원되지 않은 경우에 Mac용 Visual Studio에서는 현재 실행 줄을 변경할 수 없다고 알리는 대화 상자를 표시합니다.In these unsupported cases, Visual Studio for Mac will display a dialog to let you know it was not possible to change the current line of execution.

Mono의 클래스 라이브러리 디버깅Debugging Mono's class libraries

Xamarin 제품은 Mono 클래스 라이브러리에 대한 소스 코드와 함께 제공되며, 이 소스 코드를 사용하여 디버거에서 한 단계씩 실행하면서 코드가 어떻게 동작하는지 검사할 수 있습니다.Xamarin products ship with the source code for Mono's class libraries, and you can use this to single step from the debugger to inspect how things are working under the hood.

이 기능은 디버그 중에 추가 메모리를 사용하므로 기본적으로 꺼져 있습니다.Since this feature consumes more memory during debugging, it is turned off by default.

이 기능을 사용하도록 설정하려면 Mac용 Visual Studio > 기본 설정 > 디버거 로 이동하여 아래 그림과 같이 "한 단계씩 외부 코드 실행" 옵션이 선택 되었는지 확인합니다.To enable this feature, browse to Visual Studio for Mac > Preferences > Debugger and ensure that the "Step into external code" option is selected, as illustrated below:

한 단계씩 외부 코드 실행 옵션

참조See also