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