자습서: Visual Studio Code를 사용하여 .NET 콘솔 애플리케이션 디버그
이 자습서에서는 .NET 앱 작업을 위해 Visual Studio Code에서 사용할 수 있는 디버깅 도구를 소개합니다.
필수 구성 요소
- 이 자습서는 Visual Studio Code를 사용하여 .NET 콘솔 애플리케이션 만들기에서 만든 콘솔 앱에서 실행됩니다.
디버그 빌드 구성 사용
디버그 및 릴리스은 .NET의 기본 제공 빌드 구성입니다. 디버깅에 디버그 빌드 구성을 사용하고 최종 릴리스 배포에 릴리스 구성을 사용합니다.
디버그 설정에서는 프로그램이 전체 디버깅 심볼 정보와 최적화 없이 컴파일됩니다. 소스 코드와 생성된 명령 간의 관계가 더 복잡하기 때문에 최적화로 인해 디버깅이 복잡해집니다. 프로그램의 릴리스 구성에는 기호화된 디버그 정보가 없으며 완전히 최적화되어 있습니다.
기본적으로 Visual Studio Code 시작 설정은 디버그 빌드 구성을 사용하므로 디버깅하기 전에 변경할 필요가 없습니다.
Visual Studio Code를 시작합니다.
Visual Studio Code사용하여 .NET 콘솔 애플리케이션 만들기
만든 프로젝트의 폴더를 엽니다.
중단점 설정
중단점은 중단점이 있는 줄이 실행되기 전에 애플리케이션의 실행을 일시적으로 중단합니다.
Program.cs 파일을 엽니다.
코드 창의 왼쪽 여백을 클릭하여 이름, 날짜 및 시간을 표시하는 줄에 중단점 설정합니다. 왼쪽 여백은 줄 번호의 왼쪽에 있습니다. 중단점을 설정하는 다른 방법은 F9 을 누르거나, 코드 줄이 선택된 상태에서 메뉴에서 실행>중단점 전환 을 선택하는 것입니다.
Visual Studio Code는 왼쪽 여백에 빨간색 점을 표시하여 중단점이 설정된 줄을 나타냅니다.
디버깅 시작
왼쪽 메뉴에서 디버깅 아이콘을 선택하여 디버그 보기를 엽니다.
실행 및 디버그를 선택합니다. 질문이 표시되면 C#을 선택한 다음 C#을 선택하세요: 시작 프로젝트를 시작합니다. 디버깅 모드에서 프로그램을 시작하는 다른 방법은 F5 누르거나 메뉴에서 실행>디버깅 시작 선택하는 것입니다.
시작
시작 구성을 선택하라는 메시지가 표시되면 C#: HelloWorld HelloWorld을 선택합니다.
디버그 콘솔 탭을 선택하여 프로그램이 "당신의 이름은 무엇입니까?"라는 프롬프트를 표시하는 것을 보고 응답을 기다립니다.
선택
이름에 대한 프롬프트에 대한 응답으로 디버그 콘솔 창에 문자열을 입력한 다음 Enter 키를 누릅니다.
프로그램 실행은 중단점에 도달하고
Console.WriteLine
메서드가 실행되기 전에 중지됩니다. 변수 창의 Locals 섹션에는 현재 실행 중인 메서드에 정의된 변수 값이 표시됩니다.표시
디버그 콘솔 사용
디버그 콘솔 창을 사용하면 디버깅 중인 애플리케이션과 상호 작용할 수 있습니다. 변수 값을 변경하여 프로그램에 미치는 영향을 확인할 수 있습니다.
디버그 콘솔 탭을 선택합니다.
디버그 콘솔 창 아래쪽의 프롬프트에
name = "Gracie"
입력하고 enter누릅니다.변경
디버그 콘솔 창의 아래쪽에
currentDate = DateTime.Parse("2019-11-16T17:25:00Z").ToUniversalTime()
을 입력하고 Enter 키를눌러주세요.변수 창에는
name
및currentDate
변수의 새 값이 표시됩니다.도구 모음에서 계속 단추를 선택하여 프로그램 실행을 계속합니다. 계속하는 또 다른 방법은 F5
누르는 것입니다. 콘솔 창에 표시되는 값은 디버그 콘솔변경한 내용에 해당합니다.
입력한 값을 표시하는
Enter 눌러 애플리케이션을 종료하고 디버깅을 중지합니다.
조건부 중단점 설정
프로그램에는 사용자가 입력하는 문자열이 표시됩니다. 사용자가 아무것도 입력하지 않으면 어떻게 되나요? 유용한 디버깅 기능인 조건부 중단점을 사용하여 이을 테스트할 수 있습니다.
중단점을 나타내는 빨간색 점을 오른쪽 클릭(맥에서Ctrl클릭)하세요. 상황에 맞는 메뉴에서 중단점 편집을 선택하여 조건식을 입력하는 대화 상자를 엽니다.
드롭다운에서
Expression
을 선택한 후, 다음 조건식을 입력하고 Enter키를 누르세요.String.IsNullOrEmpty(name)
입력
중단점이 적중될 때마다 디버거는
String.IsNullOrEmpty(name)
메서드를 호출하고 메서드 호출이true
반환하는 경우에만 이 줄에서 중단됩니다.조건식 대신 적중 횟수지정할 수 있습니다. 그러면 문이 지정된 횟수만큼 실행되기 전에 프로그램 실행을 중단합니다. 또 다른 옵션은 스레드 식별자, 프로세스 이름 또는 스레드 이름과 같은 특성에 따라 프로그램 실행을 중단하는 필터 조건지정하는 것입니다.
F5눌러 디버깅으로 프로그램을 시작합니다.
디버그 콘솔 탭에서 이름을 입력하라는 메시지가 표시되면 Enter 누릅니다.
지정한 조건(
name
null
또는 String.Empty)이 충족되었으므로 중단점에 도달하고Console.WriteLine
메서드가 실행되기 전에 프로그램 실행이 중지됩니다.변수 창에는
name
변수의 값이""
또는 String.Empty표시됩니다.디버그 콘솔 프롬프트에 다음 문을 입력하고 Enter눌러 값이 빈 문자열인지 확인합니다. 결과는
true
.name == String.Empty
도구 모음에서 계속 단추를 선택하여 프로그램 실행을 계속합니다.
Enter 눌러 프로그램을 종료하고 디버깅을 중지합니다.
코드 창의 왼쪽 여백에 있는 점을 클릭하여 중단점을 지웁니다. 중단점을 삭제하는 다른 방법은 F9을 누르거나, 코드 줄이 선택된 상태에서 메뉴에서 실행 > 중단점 토글을 선택하는 것입니다.
중단점 조건이 손실된다는 경고가 표시되면 중단점 제거를선택합니다.
프로그램 단계별 실행
Visual Studio Code를 사용하면 프로그램을 한 줄씩 단계별로 실행하고 실행을 모니터링할 수도 있습니다. 일반적으로 중단점을 설정하고 프로그램 코드의 작은 부분을 통해 프로그램 흐름을 따릅니다. 이 프로그램은 작으므로 전체 프로그램을 단계별로 실행할 수 있습니다.
Main
메서드의 시작 중괄호에 중단점을 설정합니다.F5 눌러 디버깅을 시작합니다.
Visual Studio Code는 중단점 줄을 강조 표시합니다.
이때 변수 창에는
args
배열이 비어 있고name
currentDate
기본값이 있음을 보여 줍니다.실행> '한 단계씩 들어가기'를 선택하거나 F11키를 누릅니다.
Visual Studio Code는 다음 줄을 강조 표시합니다.
실행 한 단계씩 들어가기를 선택하거나 F11를 누릅니다. Visual Studio Code는 이름 프롬프트에 대해
Console.WriteLine
을 실행하고 다음 실행 줄을 강조 표시합니다. 다음 줄은name
에 대한Console.ReadLine
입니다. 변수 창은 변경되지 않았고, 터미널 탭에는 "당신의 이름은 무엇입니까?"라는 프롬프트가 표시됩니다.실행>한 단계씩 들어가기를 선택하거나 F11를 누릅니다.
Visual Studio는
name
변수 할당을 강조 표시합니다. 변수 창은name
가 여전히null
임을 보여준다.터미널 탭에 문자열을 입력하고 enter눌러 프롬프트에 응답합니다.
디버그 콘솔 탭에 입력하는 동안 입력한 문자열이 표시되지 않을 수 있지만 Console.ReadLine 메서드는 입력을 캡처합니다.
실행 한 단계씩 선택하거나 F11누릅니다. Visual Studio Code는
currentDate
변수 할당을 강조 표시합니다. 변수 창에는 Console.ReadLine 메서드 호출에서 반환된 값이 표시됩니다. 터미널 탭에는 프롬프트에 입력한 문자열이 표시됩니다.실행>한 단계씩 들어가거나 F11누릅니다.
변수 창에는 DateTime.Now 속성에서 할당된 후
currentDate
변수의 값이 표시됩니다.선택 한 단계씩 실행 또는 F11누릅니다. Visual Studio Code는 Console.WriteLine(String, Object, Object) 메서드를 호출합니다. 콘솔 창에 서식이 지정된 문자열이 표시됩니다.
실행>스텝 아웃 선택하거나 Shift+F11를 누릅니다.
터미널에 "종료하려면 아무 키나 누르세요..."가 표시됩니다.
아무 키나 눌러 프로그램을 종료합니다.
릴리스 빌드 구성 사용
애플리케이션의 디버그 버전을 테스트한 후에는 릴리스 버전도 컴파일하고 테스트해야 합니다. 릴리스 버전은 애플리케이션의 동작에 영향을 줄 수 있는 컴파일러 최적화를 통합합니다. 예를 들어 성능을 향상하도록 설계된 컴파일러 최적화는 다중 스레드 애플리케이션에서 경합 조건을 만들 수 있습니다.
콘솔 애플리케이션의 릴리스 버전을 빌드하고 테스트하려면 터미널 열고 다음 명령을 실행합니다.
dotnet run --configuration Release
추가 리소스
다음 단계
이 자습서에서는 Visual Studio Code 디버깅 도구를 사용했습니다. 다음 자습서에서는 배포 가능한 버전의 앱을 게시합니다.
.NET 콘솔 애플리케이션을 Visual Studio Code로 게시하기
.NET