디버깅 기본 사항: 중단점

업데이트: 2007년 11월

이 항목은 다음 언어에 적용됩니다.

Edition

Visual Basic

C#

C++

Web Developer

Express

항목이 적용됨 항목이 적용됨 항목이 적용됨 항목이 적용됨

Standard

항목이 적용됨 항목이 적용됨 항목이 적용됨 항목이 적용됨

Pro 및 Team

항목이 적용됨

항목이 적용됨

항목이 적용됨 항목이 적용됨

표의 범례:

항목이 적용됨

해당

항목이 적용되지 않음

해당 없음

항목이 적용되지만 명령은 기본적으로 숨겨짐

명령은 기본적으로 숨겨져 있습니다.

중단점은 특정 위치에서 프로그램 실행을 일시적으로 중단하라고 디버거에 알려 주는 신호입니다. 프로그램 실행이 중단점에서 중단되면 프로그램은 중단 모드에 있는 것입니다. 중단 모드에 있다는 것이 프로그램의 실행 종료를 뜻하지는 않으며 언제든지 실행을 다시 시작할 수 있습니다.

중단 모드는 타임 아웃과 비슷한 것으로 생각할 수 있습니다. 함수, 변수 및 개체가 메모리에 그대로 있는 경우와 같이 모든 요소가 그대로 있지만 그 동작과 작업은 일시 중단됩니다. 중단 모드에서는 각 요소의 위치와 상태를 검사하여 오류나 버그를 찾아낼 수 있습니다. 중단 모드에 있는 동안 프로그램을 수정할 수 있습니다. 예를 들어, 변수 값을 변경할 수 있습니다. 실행 위치를 이동하여 다음에 실행이 다시 시작될 때 실행될 문을 변경할 수 있습니다. C++, C# 및 Visual Basic의 경우 편집하며 계속하기라는 강력한 기능을 사용하여 중단 모드에 있는 동안 코드 자체를 변경할 수도 있습니다.

중단점은 필요할 때 필요한 위치에서 실행을 일시 중단할 수 있는 강력한 수단입니다. 줄별 또는 명령별로 코드를 한 단계씩 실행하지 않고, 중단점에 도달할 때까지 프로그램을 실행한 다음에 디버깅을 시작할 수 있습니다. 그러면 디버깅 프로세스의 속도가 매우 빨라집니다. 실제로 이 기능 없이는 큰 프로그램을 디버깅할 수 없습니다.

많은 프로그래밍 언어에 실행을 일시 중단하고 프로그램을 중단 모드로 전환하는 문이나 구문이 있습니다. 예를 들어, Visual Basic에는 Stop 문이 있습니다. 중단점은 프로그램에 추가해야 할 실제 소스 코드가 아니라는 점에서 이러한 문과 다릅니다. 중단점 문은 소스 창에 입력하지 않아도 됩니다. 사용자가 디버거 인터페이스를 통해 중단점을 요청하면 디버거가 자동으로 중단점을 설정합니다. 줄 중단점을 삽입하려면 중단점을 설정할 줄 옆의 회색 여백을 클릭합니다. 더 복잡한 중단점은 모든 기능을 갖춘 중단점 창을 통해 처리할 수 있습니다.

중단점은 Visual Basic Stop 문과 같은 디버깅 구문에 비해 많은 장점을 가지고 있습니다. 프로그램의 소스 코드를 변경하지 않아도 중단점을 삭제하거나 변경할 수 있습니다. 중단점은 문이 아니기 때문에 프로그램의 릴리스 버전을 빌드할 때 중단점으로 인해 추가 코드가 만들어지지 않습니다. 프로그램에 Stop 문을 사용한 경우, Stop 문을 수동으로 제거한 후에 릴리스 버전을 빌드하거나 아래와 같이 조건을 사용해야 합니다.

#If DEBUG Then
    Stop
#End If

Stop 문을 잠시 사용하지 않으려는 경우에는 소스 코드에서 이 문을 찾아 주석으로 처리해야 합니다.

 ' Stop

Stop 문이 하나뿐이면 쉽게 주석으로 처리할 수 있습니다. 그러나 Stop 문이 많은 큰 프로그램을 디버깅할 경우에는 모든 문을 검색해서 각 문마다 주석으로 처리하는 데 많은 시간이 걸릴 수 있습니다. 중단점을 사용할 때는 중단점 창에서 중단점의 일부 또는 모두를 선택하여 비활성화하거나 활성화할 수 있습니다.

마지막으로, 유연성 측면에서 중단점은 Stop 문보다 훨씬 장점이 많습니다. Stop 문을 사용하면 문이 위치한 소스 줄에서 실행이 중단됩니다. 똑같이 실행을 중단시키는 중단점을 소스 줄에 설정할 수 있습니다. 또한 함수나 메모리 주소에 중단점을 설정할 수도 있습니다. 이는 Stop 문을 사용할 때는 가능하지 않은 방법입니다. 이러한 위치 중단점 외에도 Visual Studio 디버거는 네이티브에만 적용되는 데이터 중단점도 제공합니다. 데이터 중단점은 코드 줄이 아닌 전역 변수나 지역 변수에 설정됩니다. 데이터 중단점을 설정하면 해당 변수 값이 변경될 때 실행이 중단됩니다.

유연성을 높이기 위해 Visual Studio 디버거에서는 다음 속성을 설정하여 중단점의 동작을 수정할 수 있습니다.

  • 적중 횟수를 사용하여 디버거가 실행을 중단하기 전에 중단점이 적중될 횟수를 결정할 수 있습니다. 기본적으로 중단점이 적중될 때마다 실행이 중단됩니다. 2번, 10번 또는 512번과 같이 적중 횟수를 설정하여 중단점이 해당 횟수에 도달하면 중지하도록 디버거에 알릴 수 있습니다. 처음으로 프로그램에서 루프를 실행하고 함수를 호출하거나 변수에 액세스할 때는 일부 버그가 나타나지 않기 때문에 적중 횟수가 유용할 수 있습니다. 간혹 100번이나 1000번 반복될 때까지도 버그가 나타나지 않는 경우도 있습니다. 이 문제는 적중 횟수가 100 또는 1000인 중단점을 설정하여 해결할 수 있습니다.

  • 조건은 중단점이 적중되는지 아니면 건너뛰는지를 결정하는 식입니다. 디버거는 중단점에 도달하면 조건을 계산합니다. 중단점은 조건이 맞을 경우에만 적중됩니다. 특정 조건이 true일 때만 지정된 위치에서 중지하도록 위치 중단점에 조건을 사용할 수 있습니다. 예를 들어, 잔고가 0 미만이 될 수 없도록 정의된 뱅킹 프로그램을 디버깅한다고 가정합니다. 중단점을 코드의 특정 위치에 설정하고 balance < 0과 같은 조건을 각 중단점에 추가할 수 있습니다. 그러면 프로그램을 실행할 때 잔고가 0 미만일 경우에 해당 위치에서 실행이 중단됩니다. 첫 번째 중단점 위치에서 변수와 프로그램 상태를 검사한 다음 두 번째 중단점 위치까지 계속 실행하여 두 번째 중단점 위치에서 다시 검사를 하는 방식으로 계속할 수 있습니다.

  • 작업은 중단점에 적중한 경우 수행해야 할 동작을 지정합니다. 기본적으로 디버거는 실행을 중단하지만 메시지를 출력하거나 Visual Studio 매크로를 대신 실행하도록 선택할 수도 있습니다. 실행을 중단하는 대신 메시지를 출력하도록 선택하면 중단점을 Trace 문과 매우 비슷한 방식으로 사용할 수 있습니다. 이와 같이 사용되는 중단점을 추적점이라고 합니다.

  • 필터를 사용하면 중단점에 대한 프로세스나 스레드를 지정할 수 있습니다.

    참고:

    특히 유용한 방법은 호출 스택 창에서 중단점을 설정하는 것입니다. 호출 스택 창을 사용하면 특정 함수 호출에 중단점을 설정할 수 있습니다. 이 설정은 자신을 호출하는 함수인 재귀 함수를 디버깅할 때 특히 유용합니다. 일정한 횟수만큼 호출한 후에 실행을 중단하려면 호출 스택 창을 사용하여 아직 반환되지 않은 이전 호출에 중단점을 설정할 수 있습니다. 디버거는 해당 중단점에 도달하면 현재 호출의 실행을 중단합니다.

참고 항목

작업

방법: 중단점 창 사용

개념

중단점 및 추적점

중단점 및 추적점

기타 리소스

디버거 로드맵