연습 - 중단점 설정
중단점은 디버그 프로세스 일시 중지 실행 중에 사용됩니다. 이렇게 하면 변수를 추적하고 코드가 실행되는 시퀀스를 검사할 수 있습니다. 중단점은 디버그 프로세스를 시작하는 좋은 방법입니다.
중단점 설정
이 모듈의 앞부분에서 디버거에서 애플리케이션을 실행하는 연습을 완료했습니다. 애플리케이션이 DEBUG 콘솔 패널에 "인사말 메시지"를 표시했습니다. 연습이 끝나면 코드가 예기치 않은 방식으로 Andrew의 인사말을 반복하는 것을 발견했습니다.
이 연습에서는 중단점을 사용하여 문제를 식별할 수 있습니다.
Program.cs 파일에 다음 코드 샘플이 포함되어 있는지 확인합니다.
/* This code uses a names array and corresponding methods to display greeting messages */ string[] names = new string[] { "Sophia", "Andrew", "AllGreetings" }; string messageText = ""; foreach (string name in names) { if (name == "Sophia") messageText = SophiaMessage(); else if (name == "Andrew") messageText = AndrewMessage(); else if (name == "AllGreetings") messageText = SophiaMessage(); messageText = messageText + "\n\r" + AndrewMessage(); Console.WriteLine(messageText + "\n\r"); } bool pauseCode = true; while (pauseCode == true); static string SophiaMessage() { return "Hello, my name is Sophia."; } static string AndrewMessage() { return "Hi, my name is Andrew. Good to meet you."; }Visual Studio Code 디버거 도구를 사용하여 루프 내
foreach의 첫 번째 코드 줄에 중단점을 설정합니다.
팁 (조언)
중단점을 설정/해제하는 한 가지 쉬운 옵션은 줄 번호 왼쪽에 있는 영역을 선택(왼쪽 클릭)하는 것입니다. 메뉴를 사용하고
Run바로 가기 키를 사용하여 중단점을 설정할 수도 있습니다.실행 메뉴에서 디버깅 시작을 선택합니다.
코드 실행이 중단점에서 일시 중지되고 현재 코드 줄이 편집기에서 강조 표시됩니다.

디버그 컨트롤 도구 모음에서 단계별 진입을 선택합니다.
디버그 컨트롤 도구 모음의 단추 위에 마우스 포인터를 가져가서 단추 레이블을 표시할 수 있습니다.
코드 실행이 다음 코드 줄로 이동하고 일시 중지됩니다.
messageText = SophiaMessage();이 코드 줄은 메서드의
SophiaMessage반환 값을 문자열 변수messageText에 할당합니다.잠시 시간을 내어 Step Into 를 선택하면 이 결과가 생성되는 이유를 고려해 보세요.
- 한 단계씩 실행 단추는 다음 실행 문으로 진행하는 데 사용됩니다.
- 배열
names의 첫 번째 요소가Sophia이고,if문이 이름Sophia을 확인하므로, 표현식은true로 평가되어 코드 실행이if문의 코드 블록으로 이동합니다.
디버그 컨트롤 도구 모음에서 단계별 진입을 선택합니다.
코드 실행이
SophiaMessage메서드로 이동한 후 일시 중지되는 것을 확인하세요.한 단계씩 실행 단추가 다음 실행 코드 줄로 진행되었습니다. 다음 실행 코드 줄은 파일의 다음 줄 번호가 아니라 실행 경로의 다음 문입니다. 이 경우 다음 실행 문은 메서드의 진입점
SophiaMessage입니다.디버그 컨트롤 도구 모음에서 단계 빠져나가기를 선택합니다.
코드 실행은
SophiaMessage메서드를 호출한 코드 줄로 돌아간 후 일시 중지됩니다.잠시 시간을 내어 Step Out을 선택하면 이 결과가 생성된 이유를 고려해 보세요.
메서드 내부에 있는 경우 프로시저 나가기 단추는 현재 메서드의 나머지 줄을 완료한 다음 메서드를 호출한 실행 컨텍스트로 돌아갑니다.
디버그 컨트롤 도구 모음에서 단계별 진입을 선택합니다.
코드 실행이 다음 코드 줄로 이동하고 일시 중지됩니다.
messageText = messageText + "\n\r" + AndrewMessage();실행이 이 코드 줄로 진행되는 이유를 잠시 생각해 보세요.
코드 들여쓰기는 이 코드 줄이
else if문에 속하는 코드 블록의 일부임을 나타내지만, 실제로는 그렇지 않습니다. 중괄호를{}사용하여 이 구조에 대한 코드 블록을 정의하면 이if - else if버그를 방지하는 데 도움이 되었을 것입니다. 코드가 작성되면 루프가 반복될 때마다 Andrew의 메시지가messageText에 추가됩니다.
코드 업데이트 확인
코드에서 문제를 격리한 후에는 코드를 업데이트한 다음 문제가 해결되었는지 확인해야 합니다.
디버그 컨트롤 도구 모음에서 중지를 선택합니다.
코드 논리를 수정하려면 잠시 시간을 내세요.
코드에서 식별된 문제를 해결하기 위한 몇 가지 옵션이 있습니다. 다음은 그 예입니다.
기존 코드 줄을 유지하고 각 코드 블록의
{}구조에 중괄호를if추가할 수 있습니다.마지막
else if문 뒤에 있는 두 코드 줄을 병합하여 다음과 같이 단일 문을 구성할 수 있습니다.else if (name == "AllGreetings") messageText = SophiaMessage() + "\n\r" + AndrewMessage();
어느 쪽이든 업데이트된 코드는
name == "AllGreetings"의 경우, 코드 블록 내에AndrewMessage에 대한 호출을 포함해야 합니다.파일 메뉴에서 저장을 선택합니다.
디버거 UI 도구를 사용하여 이전에 설정한 중단점을 지울 수 있습니다.
실행 메뉴에서 디버깅 시작을 선택합니다.
이제 코드가 예상 결과를 생성하는지 확인합니다.
Hello, my name is Sophia. Hi, my name is Andrew. Good to meet you. Hello, my name is Sophia. Hi, my name is Andrew. Good to meet you.디버그 컨트롤 도구 모음에서 중지를 선택합니다.
축하합니다! 논리 문제를 격리하고 수정하는 데 도움이 되도록 Visual Studio Code 디버거를 성공적으로 사용했습니다.
요약
이 단원에서 기억해야 하는 몇 가지 중요한 사항은 다음과 같습니다.
- 중단점을 사용하여 디버그 세션 중에 코드 실행을 일시 중지합니다.
- 디버그 컨트롤 도구 모음에서 한 단계씩 실행하여 다음 실행 코드 줄을 관찰합니다.
- 디버그 컨트롤 도구 모음에서 Step Out을 사용하여 현재 메서드를 통과하고 메서드를 호출한 코드 줄로 돌아갑니다.